Hoe begin ik aan een upload script voor bestanden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Snelle Jaap

Snelle Jaap

28/08/2018 19:49:40
Quote Anchor link
Ik wil graag een upload script maken, niet alleen voor afbeeldingen maar ook voor word documenten, pdfs, excel bestanden, eventueel videos etcetera.

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.
 
PHP hulp

PHP hulp

24/04/2024 20:45:47
 
- Ariën  -
Beheerder

- Ariën -

28/08/2018 19:59:50
Quote Anchor link
Het proces voor afbeeldingen als documenten is haast gelijk. Het enige wat verschilt is het controleren op de juiste headers en extenties.

Ikzelf gebruik de class van Verot.net omdat die erg veelzijdig is.
 
Snelle Jaap

Snelle Jaap

29/08/2018 14:00:43
Quote Anchor link
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?
 
Thomas van den Heuvel

Thomas van den Heuvel

29/08/2018 14:57:34
Quote Anchor link
Een eerste stap lijkt mij je te 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.
Gewijzigd op 29/08/2018 15:06:26 door Thomas van den Heuvel
 
Rob Doemaarwat

Rob Doemaarwat

29/08/2018 14:58:23
Quote Anchor link
Ja hoor, gaat prima (controleer het zelf maar*). Elk bestand is gewoon een bak binaire data, en die kun je gewoon via base64 doorsluizen. Op de server doe je dan het omgekeerde, en daar heb je je originele bestand weer terug.

(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
 
Snelle Jaap

Snelle Jaap

29/08/2018 16:57:27
Quote Anchor link
Bedankt voor de uitleg. Ik kwam zelf uit bij deze plugin : 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.
 
- Ariën  -
Beheerder

- Ariën -

29/08/2018 18:55:25
Quote Anchor link
Ikzelf heb voor mijn CMS twee systemen aan elkaar gekoppeld. 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.
 
Snelle Jaap

Snelle Jaap

29/08/2018 19:28:08
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.