Hoe begin ik aan een upload script voor bestanden
Waar begin ik? Als ik Google vind ik zo goed als alleen maar tutorials voor afbeeldingen.
Als iemand een website weet om me op weg te helpen zou dat top zijn.
Ikzelf gebruik de class van Verot.net omdat die erg veelzijdig is.
Ook als ik dit zou willen doen met Ajax? Ik heb al een afbeelding upload script gemaakt die een base64 string door stuurd naar mijn PHP bestand. Datzelfde kan toch niet met bijvoorbeeld een word document of wel?
verdiepen in de werking zodat je een duidelijk beeld hebt van hoe PHP omgaat met uploads.
Vervolgens kies je een techniek (AJAX of whatever) en/of een library (Verot.net).
base64 is een content transfer encoding waarbij willekeurige data wordt verpakt in ASCII. Deze data kan van alles zijn, dus zowel een textbestand als een binair bestand. Het lijkt mij niet erg zinnig om iets base64 te uploaden als je dat bedoelt (het base64 equivalent van een bestand heeft ~33% overhead, dus om dit bestand nu op voorhand op te blazen), noch ken ik daar tools voor. Je kunt een bestand wel base64 serveren, bijvoorbeeld als download. Ook voor transport (bijvoorbeeld als attachment in een e-mailbericht) is base64 geschikt. Dit is vooral handig/interessant als je de data in een neutraal / universeel compatibel formaat wilt aanleveren of overdragen.
Ik denk dat er enige verwarring is over al deze begrippen en de werken. Reden te meer om je eerst even te verdiepen in al deze materie.
On a side note: je vertelt ons ook niets over de toepassing waarvoor je uploadfunctionaliteit nodig hebt, noch de frequentie van de uploads, noch de groottes van de bestanden. Het zou zelfs kunnen uitmonden in het simpelweg gebruiken van FTP, dit is immers bedoeld voor het verzenden van bestanden. Dit in tegenstelling tot HTTP als "drager" die hier eigenlijk niet in eerste instantie voor gemaakt is.
Een eerste stap lijkt mij je te Vervolgens kies je een techniek (AJAX of whatever) en/of een library (Verot.net).
base64 is een content transfer encoding waarbij willekeurige data wordt verpakt in ASCII. Deze data kan van alles zijn, dus zowel een textbestand als een binair bestand. Het lijkt mij niet erg zinnig om iets base64 te uploaden als je dat bedoelt (het base64 equivalent van een bestand heeft ~33% overhead, dus om dit bestand nu op voorhand op te blazen), noch ken ik daar tools voor. Je kunt een bestand wel base64 serveren, bijvoorbeeld als download. Ook voor transport (bijvoorbeeld als attachment in een e-mailbericht) is base64 geschikt. Dit is vooral handig/interessant als je de data in een neutraal / universeel compatibel formaat wilt aanleveren of overdragen.
Ik denk dat er enige verwarring is over al deze begrippen en de werken. Reden te meer om je eerst even te verdiepen in al deze materie.
On a side note: je vertelt ons ook niets over de toepassing waarvoor je uploadfunctionaliteit nodig hebt, noch de frequentie van de uploads, noch de groottes van de bestanden. Het zou zelfs kunnen uitmonden in het simpelweg gebruiken van FTP, dit is immers bedoeld voor het verzenden van bestanden. Dit in tegenstelling tot HTTP als "drager" die hier eigenlijk niet in eerste instantie voor gemaakt is.
Gewijzigd op 29/08/2018 15:06:26 door Thomas van den Heuvel
(dit was een reactie op Snelle Jaap 29/08/2018 14:00:43; Thomas fietste er tussendoor)
* Kan zijn dat je huidige upload tooltje je beperkt tot afbeeldingen, dat moet je er dan even uit slopen
Maar als we dan toch bezig zijn: @Thomas: base64 wordt bij asynchroon uploaden vaak gebruikt om het bestand over te sluizen. Er zijn nl twee mogelijkheden (voor zover ik weet):
- De file upload in een mini <form> verpakken die naar een hidden frame POST. Het bestand wordt dan op de normale manier ge-upload (en zit dus in $_FILES in PHP-land). Nadeel is dat je wat minder controle hebt, en je een (mini) <form> ook niet in een groter <form> kunt nesten.
- De file upload via een Javascript Filereader object client-side inlezen en vervolgens asynchroon naar de server sturen. Om problemen met evt. non-ASCII karakters in de call te voorkomen (JSON) wordt de data dan meestal als base64 encode. Dit kan heel eenvoudig via FileReader.readAsDataURL().
Kan tegenwoordig met FormData lees ik nu. Volgens mij dan zonder base64 tussenstap (en geen JSON, gewoon een ouderwetse POST, zoals je ook een <form> submit).
Gewijzigd op 29/08/2018 16:20:11 door Rob Doemaarwat
https://github.com/kuiwang/blueimp-jQuery-File-Upload/
Die regelt een hoop voor je, het is alleen nog even uitzoeken hoe ik de bestandsinformatie kan opslaan in mijn database.
@Thomas over je vraag hoe vaak en wat voor bestanden er geupload zullen worden: Er is maar 1 persoon op mijn site die bestanden gaat uploaden, wat voornamelijk pdfs zullen zijn of .doc bestanden.
@Rob Klopt, die plugin gebruikt ook formdata, werkt top.
Bedankt voor de uitleg. Ik kwam zelf uit bij deze plugin : Die regelt een hoop voor je, het is alleen nog even uitzoeken hoe ik de bestandsinformatie kan opslaan in mijn database.
@Thomas over je vraag hoe vaak en wat voor bestanden er geupload zullen worden: Er is maar 1 persoon op mijn site die bestanden gaat uploaden, wat voornamelijk pdfs zullen zijn of .doc bestanden.
@Rob Klopt, die plugin gebruikt ook formdata, werkt top.
PLupload en de class van Verot.net. Dan heb je twee dingen die je makkelijk kan aanpassen onafhankelijk van elkaar. Ik denk ik dat het bij blueimp-jQuery-File-Upload wat lastiger kan worden, als je de boel goed up-to-date wilt houden.
Het blijft een keuze verder die per persoon verschilt.
Ikzelf heb voor mijn CMS twee systemen aan elkaar gekoppeld. Het blijft een keuze verder die per persoon verschilt.
Iets voor in de toekomst ziet er wel compacter uit dan wat ik nu heb. Gelukkig heb ik deze plugin nu bijna aan de praat zoals ik wil.