Toon posts:

PHP upload progress

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

Verwijderd

Topicstarter
Is er een manier om tijdens het uploaden van een file via een PHP upload script iets vaan voortgang te laten zien, want met bestanden die boven de 100 kb zijn denk je al snel dat de witte pagina een error is....

  • SnoW
  • Registratie: Februari 2000
  • Laatst online: 03-09 10:35
Een ontzettend oud topic, maar ik loop tegen hetzelfde probleem aan.

Iemand een idee hoe je dit kunt oplossen?

Alvast bedankt!

  • stfn345
  • Registratie: Januari 2000
  • Laatst online: 15-09 16:39
Nope.. geen idee..
ik heb gewoon "Dit kan enkele momenten duren" erneer gepleurd.. in ASP zijn er speciale dingen voor..

Verwijderd

Euh aan het begin van de sessie krijg je toch gewoon data waar ook in staat hoe groot de file is :?... of is dat niet het geval en moet je wachten op een EOF?..

Als iemand hier eens iets op vond zou ik dat persoonlijk (maar denk ook dat anderen dat zouden vinden) erg tof, tegek en strak vinden :)

  • Mart!
  • Registratie: Februari 2000
  • Laatst online: 15-09 10:30
Het probleem is natuurlijk dat de server de file eerst de file moet ontvangen voordat er een response kan worden teruggestuurt.

In ASP (dit is geen flame, maar de idee/techniek erachter) bestaat een componentje dat ik ooit gebruikt heb dat op de volgende manier werkt:

Bij een upload vraag je een upload-ID aan bij het uploadcomponent. Vervolgens wordt d.m.v. je post de data ontvangen door het upload-object. Omdat de filesize vooraf bekend is weet het uploadcomponent het % waarop de upload zich bevindt.
Als je op submit drukt open je ook een popupwindow (iframepje kan natuurlijk ook) die steeds herlaad (javascript) en d.m.v. het upload-ID het % ophaalt. Dit kan dan tekstueel/grafisch worden weergegeven. Wanneer de upload klaar is (% = 100) kun je het windowtje afsluiten en zal de server de volgende pagina tonen zoals je nu ook al gewend bent.

[Weer wat geleerd !?]

Verwijderd

Speedtest.nl geeft ook de vooruit gang van de test, ff blieken daar

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 08:40

Super_ik

haklust!

Op dinsdag 15 januari 2002 19:23 schreef Mart! het volgende:
Het probleem is natuurlijk dat de server de file eerst de file moet ontvangen voordat er een response kan worden teruggestuurt.

In ASP (dit is geen flame, maar de idee/techniek erachter) bestaat een componentje dat ik ooit gebruikt heb dat op de volgende manier werkt:

Bij een upload vraag je een upload-ID aan bij het uploadcomponent. Vervolgens wordt d.m.v. je post de data ontvangen door het upload-object. Omdat de filesize vooraf bekend is weet het uploadcomponent het % waarop de upload zich bevindt.
Als je op submit drukt open je ook een popupwindow (iframepje kan natuurlijk ook) die steeds herlaad (javascript) en d.m.v. het upload-ID het % ophaalt. Dit kan dan tekstueel/grafisch worden weergegeven. Wanneer de upload klaar is (% = 100) kun je het windowtje afsluiten en zal de server de volgende pagina tonen zoals je nu ook al gewend bent.

[Weer wat geleerd !?]
of iets wat er oplijkt
in een andere php pagine de filename(lokaal) en de groote die het moet worden meegeven, en dan php door lokaal de size op te halen laten berekene hoever het is

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • Mart!
  • Registratie: Februari 2000
  • Laatst online: 15-09 10:30
Op dinsdag 15 januari 2002 20:06 quote Super_ik mij en zei daarop het volgende:
in een andere php pagine de filename(lokaal) en de groote die het moet worden meegeven, en dan php door lokaal de size op te halen laten berekene hoever het is
Probleem is echter dat er tijdens het upoaden naar mijn weten niet naar file geschreven wordt, dit gebeurt pas als de upload volledig binnen is (?). Bovendien vraag ik me af of de filesize niet in 1 keer van 0 bytes naar x bytes (de grootte van het bestand) schiet. Bij windhoos zal dit denk ik wel het geval zijn, met Linux/PHP zou ik het zo niet weten. Ik denk niet dat het zo eenvoudig is, maar als dit zou werken is het voor PHP een oplossing. Tijd voor een l33t PHP'er om dit uit te zoeken ;)

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 11:11

me1299

$ondertitel

bij http://www.web2ftp.com/ is het zo ook aardig gelukt overigens.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Verwijderd

ok, maar zoals je ziet gebruiken ze daar de extentie .pl
Perl dus, en waarschijnlijk werkt een upload daar op een zelfe manier waarop de asp upload werkt (te zien aan de popup waarin upload thread #x te zien is, een uniek id van de upload die bezig is)

  • drZymo
  • Registratie: Augustus 2000
  • Laatst online: 09-08 22:22
Vrijwel onmogelijk in mijn inziens. Upload wordt namelijk in een POST commando naar je webserver gestuurd. En dit is iets wat niet naar je PHP parser gestuurd wordt. Je kan er zelf dus nix mee.

Het enige wat mischien kan is idd de file grootte opvragen constant. Elke file wordt zover ik weet eerst in je temporary dir geflikkert. Dus daar kan je mischien wat mee proberen. Voor de rest lijkt het me bijna onmogelijk.

"There are three stages in scientific discovery: first, people deny that it is true; then they deny that it is important; finally they credit the wrong person."


  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 09:33

TheDane

1.618

ik heb zelf wat zitten prutsen, maar via hosting company kan ik geen files uploaden naar mn site :?

anyway, check http://www.php.net .. staat een aardig stukje over 't uploaden van files.

Zodra je gepost hebt weet je de grootte van je bestand, en kun je deze in brokken van 1/100e van de filesize inlezen, en na ieder 100e deel mbv dynamische html of wat dan ook een balkje tekenen.

Dus volgens mij kan 't wel

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:47
Een concrete oplossing voor het probleem kan ik niet geven, maar ik kan wel vertellen dat een gangbare webserver NIET de hele request (inclusief POST data) binnenhaalt alvorens te beginnen met de afhandeling. Een programmeertaal die zelf de invoer afhandelt, zoals bijvoorbeeld Perl en C, kan dus prima zien hoe ver een download gevorderd is en afhankelijk daarvan de juiste informatie naar de bezoeker sturen.

Hoe dit in PHP moet zou ik helaas niet kunnen vertellen. Misschien kan je beter Perl ofzo gebruiken.

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

* SchizoDuckie vermeodt dat je bij een java applet of ActiveX object uitkomt, Deze zal je dan het http proto moeten laten onderscheppen (is al niet makkelijk) en deze moet bijhoude hoeveel bytes er verzonden zijn...


i wish u luck...

Stop uploading passwords to Github!


  • SnoW
  • Registratie: Februari 2000
  • Laatst online: 03-09 10:35
Ik kom op de PHP-site net wat tegen dat misschien een oplossing kan bieden: CURL (http://www.php.net/manual/en/ref.curl.php).

Is er hier iemand die ooit met CURL heeft gewerkt? Zou graag eens een voorbeeldscriptje willen bekijken...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Als je het "browser -> php-script" bedoelt?

Ik betwijfel of curl je daarbij kan helpen.
Zowiezo is het erg lastig maken, zoiets...


"php-script -> somewhere else" is relatief eenvoudig te maken...

Verwijderd

Op woensdag 16 januari 2002 15:47 schreef ACM het volgende:
Als je het "browser -> php-script" bedoelt?

Ik betwijfel of curl je daarbij kan helpen.
Zowiezo is het erg lastig maken, zoiets...


"php-script -> somewhere else" is relatief eenvoudig te maken...
idd je checkt het aantal verzonden bytes op het totale aantal bytes..

  • SnoW
  • Registratie: Februari 2000
  • Laatst online: 03-09 10:35
"php-script -> somewhere else" is relatief eenvoudig te maken...
Wat bedoel je precies met "php-script -> somewhere else" ? Kun je me daar wat meer over vertellen?

  • paulh
  • Registratie: Juli 1999
  • Laatst online: 22-06 15:30
Ik vraag me ook nog af ... dat stel je hebt een bestand van 10Mb en de internet verbinding is ongeveer 10Kb/sec ... dan duurt het dus wel ff voordat het bestand overgestuurd is. Ontstaat er dan geen timeout van de pagina die gesubmit wordt ?

[ZwareMetalen.com] - [Kom in aktie tegen de CO2 maffia]


  • Martijn02
  • Registratie: September 2000
  • Laatst online: 15-09 14:25

Martijn02

/* No Comment */

Op vrijdag 18 januari 2002 13:26 schreef paulh het volgende:
Ik vraag me ook nog af ... dat stel je hebt een bestand van 10Mb en de internet verbinding is ongeveer 10Kb/sec ... dan duurt het dus wel ff voordat het bestand overgestuurd is. Ontstaat er dan geen timeout van de pagina die gesubmit wordt ?
euhm, durf ik niet met zekerheid te zeggen, maar ik denk van niet, de timeout geldt namelijk voor PHP, en niet voor apache. Tenminste, apache zal ook wel een timeout hebben maar die zal niet verlopen zolang je data blijft versturen...

Maar volgens mij begint de PHP timeout pas te lopen als het script begint, en dat is pas zodra de file binnen is volgens mij, daarom is het ook zo lastig om een progressbar te maken...

Volgens mij is de enige mogelijke oplossing om bij het verzenden van het form een popup te openen naar een andere PHP file, met als argument de bestandsnaam, en dan proberen af te leiden welke temp-file PHP gebruikt voor het uploaden, en daar de grote van controleren, dan kan je aangeven hoeveel kb er binnen is, de hele grootte weet je dan namelijk nog niet.

Mischien kan je iets in de source van PHP hacken zodat je van te voren weet onder welke temp naam hij het ding gaat opslaan...

pfff...

Ach... laten we het er maar op houden dat het niet mogelijk is..
Pagina: 1