[PHP] Filemanager met PHP/MySQL

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 10:25
Ik ben op dit moment bezig een filemanager te maken, ik wil dit echter gaan doen met php & mysql. Alle bestanden en mappen komen in een aparte record te staan. Ik heb een tabel mappen waarin alle mappen & submappen in worden aangemaakt, en dat werkt goed. Echter heb ik een probleem met de bestanden. Het moet voor de klant mogelijk zijn om in een map twee bestanden aan te maken met exact dezelfde bestandsnaam. De klant kan dan aan de datum zien welke de nieuwste is. Echter zit ik een beetje met een probleem wat ik dan moet doen met de bestanden, waar zet ik ze neer op de server? Ik had gedacht om de bestandsnaam op te slaan in de database, dan die bestandsnaam omvormen naar het id van het bestand+extensie. Dan kun je de originele bestandsnaam gewoon weergeven en kun je meerdere bestanden met dezelfde naam toch gewoon zonder problemen opslaan op de server. Echter als je nu het bestand gaat downloaden, download ie het bestand met de naam bestandid+extensie en dat wil ik niet, als er gedownload wordt dan moet gewoon de orignele bestandsnaam weer meegegeven worden....

iemand enig idee hoe ik dit kan realiseren? Ik dacht zelf aan voor elk bestand een aparte map aanmaken met het id van het bestand, en dan gewoon het bestand met originele bestandsnaam in die map uploaden, alleen dat leek me een beetje omslachtig, iemand anders een idee?

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Gewoon het veld filename (en mimetype) ook opslaan in je tabel

watch the magic:

PHP:
1
2
3
4
5
6
7
8
9
    function download() 
        {
            header("Cache-Control: private"); 
            header('Content-Type: {$this->MimeType}');
            header("Content-Transfer-Encoding: binary");
            header('Content-Length: '.filesize($this->ID));
            header("Content-Disposition: attachment; filename=\"{$this->FileName}\"");
            die(file_get_contents("./files/{$this->ID}"); // files opgeslagen dan als ID uit het db record  
        }

[ Voor 13% gewijzigd door SchizoDuckie op 25-04-2007 11:28 ]

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • hamsteg
  • Registratie: Mei 2003
  • Laatst online: 20-09 00:03

hamsteg

Species 5618

Volgens mij zijn er twee oplossingen.

De eerste is basic: De bestandsname met timestamp opslaan (hoef je ook geen database bij te houden). De gevraagde file ook op het FS copyeren zonder timestamp (effectief staat die file dan twee keer op het FS) en deze voor download aanbieden.

De twee lijkt moeilijker maar kon uiteindelijk wel eens efficienter zijn. Maak gebruik van een archief systeem als CVS.

@SchizoDuckie, 'tuurlijk header info aanpassen |:( De grondvraag blijft echter waarom je geen CVS gebruikt voor archivering van files.

[ Voor 14% gewijzigd door hamsteg op 25-04-2007 11:33 ]

... gecensureerd ...


Acties:
  • 0 Henk 'm!

Verwijderd

uhm.. het pakket webmin (*voor linux) heeft een file manager zou daar eens naar kijken als ik jou was

Acties:
  • 0 Henk 'm!

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 10:25
@ SchizoDuckie

Thnx dat ziet er interessant uit, maar wat houdt die mime-type eigenlijk precies in?

Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 12:37

Gonadan

Admin Beeld & Geluid, Harde Waren
[google=mime-type]
zegt
http://en.wikipedia.org/wiki/MIME_type
:)

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 10:25
thnx, het werkt!!
Pagina: 1