[PHP] Uploaden grote bestanden met progress bar en cancel

Pagina: 1
Acties:
  • 175 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op een site die ik aan het maken ben moeten bezoekers de mogelijkheid hebben om grote bestanden te uploaden, de grootte kan oplopen tot honderden MB's. Uiteraard is in zo'n geval het standaard voortgangsscherm van je browser niet erg handig, omdat veel bezoekers niet snappen dat ze gewoon geduld moeten hebben en niet op back moeten drukken of naar andere pagina's moeten navigeren.

Ik zou daarom graag een script maken dat de upload kan "managen". De bedoeling is dat er een progress bar verschijnt die de voortgang van de upload aangeeft. Het liefste zou ik er zelfs bij hebben staan hoe lang de upload al bezig is en hoe lang het naar verwachting nog zal duren. Hier wil ik dan een duidelijke instructie bij zetten dat de gebruiker moet wachten totdat de progress bar aan het einde is en er een boodschap "upload voltooid" verschijnt.
Ook zou ik graag de gebruiker de mogelijkheid bieden om de upload de "cancellen". Dit kan bijvoorbeeld erg handig zijn wanneer een gebruiker ziet dat het gewoon te lang gaat duren en dus van de upload af wil zien op dat moment.

Ik heb zitten zoeken en kan wel oplossingen vinden die in de buurt komen van het bovenstaande. Dit zijn echter oplossingen die niet alleen PHP maar ook andere talen gebruiken zoals bijvoorbeeld PERL AJAX of JAVA. Dit geniet niet mijn voorkeur, ik zou graag een oplossing gebruiken die puur op PHP gebaseerd is.
Verder hoeft het geen hele "zware" oplossing te zijn, als de bovenstaande dingen mogelijk zijn is dit meer dan voldoende. Ik kom namelijk ook oplossingen tegen die een halve ftp-omgeving van je website maken, dit is absoluut niet de bedoeling. Het gaat bij mij slechts om één bestand per keer.

Acties:
  • 0 Henk 'm!

  • bakakaizoku
  • Registratie: Januari 2002
  • Laatst online: 17-09 10:27
1e hit op "php5 upload progress bar"

http://talks.php.net/show/torkey06/24

je ontkomt er niet aan om hiervoor ajax te gebruiken

[ Voor 27% gewijzigd door bakakaizoku op 12-07-2007 11:55 ]

PSN: bakakaizoku - WoW: Thiccblonde (GM of Phoenix Ascension) @ Twisting-Nether


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
offtopic:
wat is dat talks.php.net overigens een crappy website.

"IE is not supported - please use Firefox, Safari, Konqueror or just about anything else."


sterf :')

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Tja, je komt niet onder wat clientside gebeuren uit. Dat is ook verdomde logisch omdat hetgeen jij wilt allemaal aan de clientside afgehandeld wordt. Php komt pas in actiezodra het hele bestand geupload is. Het hele progress gebeuren en het cancelen KAN php helemaal niet.

Je zult minimaal iets javascripts moeten doen (de AJAX oplossing) of zelf een upload component maken (De Java oplossing).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
http://digitarald.de/playground/uplooad.html

ik vind deze wel mooi!

ow , geen ajax? mwa hij is wel mooi ;)

[ Voor 23% gewijzigd door Mister_X op 12-07-2007 15:29 ]


Acties:
  • 0 Henk 'm!

  • etrans
  • Registratie: April 2002
  • Niet online
Neem een kijkje op deze site:

http://www.laurent-laville.org/?module=pear&desc=progress2

Veel voorbeelden,documentatie en mogelijkheden !

Succes !

Emile

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
(offtopic: plz plz als er dan toch iets java in moet, maak dan een "website verlaat check" ik heb te vaak dat bijv msn of een online-documentatie weer eens een internet site opent in al bestaand scherm, waardoor je 20min voor niks hebt zitten uploaden, ww.meeboo.com (online messenger) vraagt dan altijd of je wel echt weg wilt. Dit zou erg mooi zijn in je site!

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Martine
  • Registratie: Mei 2002
  • Niet online
Deze uploader maakt gebruk van Perl, PHP en javascript, ik draai er momenteel mee in een testversie en valt mij zeker niet af.

http://uber-uploader.sourceforge.net/

Er is ook een demo beschikbaar, http://www.webdice.org/uber_uploader

[ Voor 19% gewijzigd door Martine op 13-07-2007 18:23 . Reden: demolink toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Wellicht moet je ook even goed overwegen of dit wel is wat je wil. Enkele honderden MBs overpompen via een HTTP post request.... :S
Kun je niet beter een FTP protocol gebruiken hiervoor. Daar kun je toch veel makkelijker progress mee bijhouden?

Signature van nature


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Sircuri schreef op zaterdag 14 juli 2007 @ 15:18:
Wellicht moet je ook even goed overwegen of dit wel is wat je wil. Enkele honderden MBs overpompen via een HTTP post request.... :S
Kun je niet beter een FTP protocol gebruiken hiervoor. Daar kun je toch veel makkelijker progress mee bijhouden?
DIkke kans dat FTP naar buiten voor veel gebruikers niet openstaat, vaak is de enige manier om een site te gebruiken een transparante proxy. Daarnaast is er niks mis met HTTP-post requests. Ik zie niet hoe je vanuit een browser windows met FTP 'makkelijker' een status bij kunt houden, dit zal eerder moeilijker zijn.

https://niels.nu


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bedankt voor alle reacties! Zitten zeker bruikbare oplossingen tussen. Ik ben verder door een collega nog op deze mogelijkheid gewezen, maar het fijne wist hij er ook niet van:

http://blog.liip.ch/archi...xtension-for-php-5-2.html

Als ik het zo op het eerste gezicht lees dan lijkt het inmiddels dus toch mogelijk met alleen PHP, of vat ik dit nu verkeerd op?

Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 02:04

aex351

I am the one

Je zou toch iets kunnen maken dat wanneer een uploader op de knop upload drukt er een statische venster middels javascript word weergeven.

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Dat vat je verkeerd op, PHP staat hier volledig los va.
Het uploaden van het bestand is onderdeel van het HTTP POST request PHP heeft daar nog helemaal niets mee te maken.

Pas als het request voltooid is, en dus het bestand volledig geupload, geeft de webserver het request door aan PHP, waarje vervolgens de locatie van het geuploade bestand uit de $_FILES superglobal kunt halen. Tot het bestand volledig is geupload, weet PHP nog van niets

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
jullie hebben inderdaad gelijk ja. Die link die ik gaf bleek bij nader inzien een oplossing te bevatten die ook gebruikmaakt van JS, werkt overigens wel goed in combinatie met die nieuwe PHP-functie die de uploadstatus door kan geven

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Je moet wel de nieuwste PHP 5.2.3 hebben anders werkt het niet, deze kan namelijk de status van het geuploade bestand opvragen tijdens het uploaden. Dan is het in princiepe simpel om je status te checken, je doet elke seconde oid een ajax request.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Is dit een optie: http://aariadne.com/uploadform/?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Hier kun je misschien ook wat mee: http://swfupload.mammon.se

Flash-based, en daar zit standaard alles in om voortgang mee bij te houden, dus je hoeft dan niet middels AJAX de server te pollen.
Pagina: 1