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....
Een ontzettend oud topic, maar ik loop tegen hetzelfde probleem aan.
Iemand een idee hoe je dit kunt oplossen?
Alvast bedankt!
Iemand een idee hoe je dit kunt oplossen?
Alvast bedankt!
Nope.. geen idee..
ik heb gewoon "Dit kan enkele momenten duren" erneer gepleurd.. in ASP zijn er speciale dingen voor..
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
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
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 !?]
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 oplijktOp 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 !?]
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
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 zoekenOp 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
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)
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)
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.
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."
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
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
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.
Hoe dit in PHP moet zou ik helaas niet kunnen vertellen. Misschien kan je beter Perl ofzo gebruiken.
* 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...
i wish u luck...
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...
Is er hier iemand die ooit met CURL heeft gewerkt? Zou graag eens een voorbeeldscriptje willen bekijken...
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...
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
idd je checkt het aantal verzonden bytes op het totale aantal bytes..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...
Wat bedoel je precies met "php-script -> somewhere else" ? Kun je me daar wat meer over vertellen?"php-script -> somewhere else" is relatief eenvoudig te maken...
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...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 ?
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