Toon posts:

Uploaden via POST method

Pagina: 1
Acties:

Verwijderd

Topicstarter
De laatste tijd hebben we een aantal applicaties ontwikkeld waar een upload van nogal grote bestanden aan vast hangt.

De bestanden worden geupload via de POST method, en vervolgens verwerkt. Nu hebben we echter opgemerkt dat de upload via adsl bijvoorbeeld wel werkt (bestanden van 30 - 40 mb), maar via telenet lukt het niet om meer dan 20 mb te uploaden.

Er is uiteraard rekening gehouden met de time_limit in php, de max_upload en de max_post.

Heeft hier iemand ervaringen mee of ideeën waarom dit eventueel fout gaat? Ik word er een 'beetje' gek van.

  • Pete
  • Registratie: November 2005
  • Laatst online: 31-10 12:38
Waarschijnlijk ligt dit dan niet aan je script maar aan externe factoren. Misschien gooit telenet (dat is een belgische aanbieder toch) een connectie die langer open is dan x minuten (of die x bytes getransporteerd heeft) dicht.

Daarnaast is het POST-protocol niet echt bedoeld natuurlijk voor het uploaden van zulke grote bestanden. Misschien moet je overwegen om bijv. FTP te gebruiken.

[ Voor 1% gewijzigd door Pete op 22-01-2007 11:53 . Reden: veel = groot ]

petersmit.eu


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op maandag 22 januari 2007 @ 11:02:
De laatste tijd hebben we een aantal applicaties ontwikkeld waar een upload van nogal grote bestanden aan vast hangt.

De bestanden worden geupload via de POST method, en vervolgens verwerkt. Nu hebben we echter opgemerkt dat de upload via adsl bijvoorbeeld wel werkt (bestanden van 30 - 40 mb), maar via telenet lukt het niet om meer dan 20 mb te uploaden.

Er is uiteraard rekening gehouden met de time_limit in php, de max_upload en de max_post.

Heeft hier iemand ervaringen mee of ideeën waarom dit eventueel fout gaat? Ik word er een 'beetje' gek van.
Zonder meer informatie of foutmeldingen kunnen wij enkel net zo goed gissen als jij; je zult dus meer informatie moeten verschaffen. (Is overigens de upload van telenet niet gewoon lager?)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • M-ThijZ
  • Registratie: Maart 2003
  • Laatst online: 11:52

M-ThijZ

Riding on Rails

Is het trouwens niet beter om files te versturen via HTTP multipart POST?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14:32

Creepy

Tactical Espionage Splatterer

M-ThijZ: No offense, maar hoe denk je dat er nu geupload word dan? Zonder multipart kan je niet eens bestanden uploaden via POST ;)

Overigens zou ik ook naar een andere oplossing gaan zoeken. 30-40MB is echt gigantisch voor een POST. Het gebeurt regalmatig dat bijv. een upload van dit soort formaat door de firewall van de klant wordt afgekapt. Dat hebben we hier al regelmatig zien gebeuren.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
RobIII schreef op maandag 22 januari 2007 @ 11:07:
[...]

Zonder meer informatie of foutmeldingen kunnen wij enkel net zo goed gissen als jij; je zult dus meer informatie moeten verschaffen. (Is overigens de upload van telenet niet gewoon lager?)
Ik ben er nogal vrij hard mee aant sukkelen geraakt. Uiteindelijk heb ik een zo simpel mogelijk uploadscriptje gemaakt, en daarmee aant testen geweest.

<?
if(isset($_FILES)){
move_uploaded_file($_FILES['Filedata']['tmp_name'], "uploads/".$_FILES['Filedata']['name']);
}
?>
<html>
<body>

<form action="index.php" method="post" enctype="multipart/form-data">
<input type="file" name="Filedata">
<input type="submit" value="send">
</form>
</body>
</html>

Ik heb er ook aan gedacht dat telenet (idd een belgische provider) misschien een timeout heeft of iets dergelijk, aangezien ons adsl-lijn hier weer geen problemen geeft. De paranoia sloeg toe, en heb zelfs gewoon de router ertssuit gegooid hier. Zelfde probleem.
phsmit schreef op maandag 22 januari 2007 @ 11:07:
Daarnaast is het POST-protocol niet echt bedoeld natuurlijk voor het uploaden van zoveel bestanden. Misschien moet je overwegen om bijv. FTP te gebruiken.
Ik weet het, maar het is een web-upload van één bestand per keer. Als ik dit met php wil bereiken, zal het bestand toch eerst gepost worden, vooraleer het van de tmp map naar de eindmap wordt geftp'd. Niet?

EDIT :
Creepy schreef op maandag 22 januari 2007 @ 11:16:
Overigens zou ik ook naar een andere oplossing gaan zoeken. 30-40MB is echt gigantisch voor een POST. Het gebeurt regalmatig dat bijv. een upload van dit soort formaat door de firewall van de klant wordt afgekapt. Dat hebben we hier al regelmatig zien gebeuren.
Idd, maar hoe zou ik het dan kunnen oplossen?

[ Voor 12% gewijzigd door Verwijderd op 22-01-2007 11:25 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op maandag 22 januari 2007 @ 11:22:
De paranoia sloeg toe, en heb zelfs gewoon de router ertssuit gegooid hier. Zelfde probleem.
Een router er tussen uit gooien heeft natuurlijk weinig nut als een lijn aan de andere kant gewoon niet sneller kan. Overigens stellen we het op prijs als je code post tussen [code] tags ;)
Verwijderd schreef op maandag 22 januari 2007 @ 11:22:
Ik weet het, maar het is een web-upload van één bestand per keer. Als ik dit met php wil bereiken, zal het bestand toch eerst gepost worden, vooraleer het van de tmp map naar de eindmap wordt geftp'd. Niet?
Als je de client laat FTP-en haal je heel de post er tussen uit hoor :?
Verwijderd schreef op maandag 22 januari 2007 @ 11:22:

Idd, maar hoe zou ik het dan kunnen oplossen?
De suggesties hier ter harte nemen en FTP gebruiken ;)

[ Voor 64% gewijzigd door RobIII op 22-01-2007 11:32 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Pete
  • Registratie: November 2005
  • Laatst online: 31-10 12:38
Verwijderd schreef op maandag 22 januari 2007 @ 11:22:
[...]


Ik weet het, maar het is een web-upload van één bestand per keer. Als ik dit met php wil bereiken, zal het bestand toch eerst gepost worden, vooraleer het van de tmp map naar de eindmap wordt geftp'd. Niet?
Sorry, ik bedoelde te zeggen zulke grote bestanden (of zoveel bitjes :) )

petersmit.eu


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:04

TeeDee

CQB 241

RobIII schreef op maandag 22 januari 2007 @ 11:30:
[...]
Als je de client laat FTP-en haal je heel de post er tussen uit hoor :?

[...]

De suggesties hier ter harte nemen en FTP gebruiken ;)
RobIII, hoewel ik het met je eens bent dat je hier beter FTP voor kan gebruiken wil je wel eens het e.e.a. hufterproof bouwen.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
TeeDee schreef op maandag 22 januari 2007 @ 11:56:
[...]

RobIII, hoewel ik het met je eens bent dat je hier beter FTP voor kan gebruiken wil je wel eens het e.e.a. hufterproof bouwen.
Dan zul je, in dit geval, dus je time-out moeten opschroeven of de belgen (en/of tragere uploaders) een alternatief geven. Hufterproof maken is leuk, maar als het met externe factoren te maken heeft waar je geen invloed op hebt dan is dat niet altijd mogelijk natuurlijk.
Je kunt je gebruikers ook verzoeken bestanden te zippen/rarren of in "stukken" te uploaden om daarmee eventuele time-outs te voorkomen; maar of dat gebruiksvriendelijk is is een tweede ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Het is mss ver gezocht, maar een upload naar youtube gebeurd met adsl en telenet perfect. Ook al is het bestand 20-30 mb. Hoe zouden zij dit doen?

En ftp_put gebruiken in plaats van move_uploaded_file is een andere mogelijkheid, maar tenslotte zal je nog altijd eerst via het HTTP protocol het bestand gaan posten vooraleer het ftp-protocol gebruikt wordt.

Je zal dus eigenlijk als ik het goed begrijp een client programmake moeten hebben, bijvoorbeeld java (of mss flash?). Iets dat client side draait... juist?

(ps : het voorbeeldje gebruikt is maar iets rap rap voor het probleem te zoeken, het hufterproof maken is nie moeilijk uiteindelijk)

  • M-ThijZ
  • Registratie: Maart 2003
  • Laatst online: 11:52

M-ThijZ

Riding on Rails

Creepy schreef op maandag 22 januari 2007 @ 11:16:
M-ThijZ: No offense, maar hoe denk je dat er nu geupload word dan? Zonder multipart kan je niet eens bestanden uploaden via POST ;)
Oeps, was nog niet helemaal wakker.

In hoeverre zou het mogelijk zijn d.m.v. JavaScript de data te splitsen en met meerdere POST requests de data over te zenden?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
M-ThijZ schreef op maandag 22 januari 2007 @ 15:24:
[...]
In hoeverre zou het mogelijk zijn d.m.v. JavaScript de data te splitsen en met meerdere POST requests de data over te zenden?
Niet. Simple as that ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • markiemannie
  • Registratie: Mei 2006
  • Laatst online: 09-11 04:07
Verwijderd schreef op maandag 22 januari 2007 @ 13:01:
En ftp_put gebruiken in plaats van move_uploaded_file is een andere mogelijkheid, maar tenslotte zal je nog altijd eerst via het HTTP protocol het bestand gaan posten vooraleer het ftp-protocol gebruikt wordt.
Volgens mij begrijp jij het verkeerd, er wordt bedoeld dat de client ftp gebruikt om te uploaden.
Mischien dat je een soort n00bproof java ftp client kan vinden? Ik heb er ergens wel eens een gezien...

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Je zou iets kunnen proberen met WebDAV, maar dat is geloof ik wel vrij involved.

Rustacean


Verwijderd

Het is ook een eitje om zelf even een mooie Java applet te bouwen welke de FTP upload voor elkaar brengt, zelfs op zo'n manier dat de client er niets van ziet.

Enige nadeel is dat de client Java moet hebben (is wel te doen), maar ook dat hij iedere keer een Java applet moet inladen wat soms best wel eens even kan duren.

Er zijn zeker goede en relatief makkelijke oplossingen via FTP en alsnog volledig hufterproof.

Via POST is vragen om problemen.

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 15:03
Via Flash kan je misschien uploaden? Daar heb je alleen wel een speciale server voor nodig volgens mij, communication server o.i.d.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:04

TeeDee

CQB 241

Misschien inmiddels overbodig, maar is dit niks? Voor zover ik het heel even gauw gelezen heb, zorgt dit script ervoor dat het e.e.a. in een chunks wordt gehakt en dan geupload.

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
TeeDee schreef op dinsdag 23 januari 2007 @ 15:05:
Misschien inmiddels overbodig, maar is dit niks? Voor zover ik het heel even gauw gelezen heb, zorgt dit script ervoor dat het e.e.a. in een chunks wordt gehakt en dan geupload.
Heb er maar één woord voor : netjes!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
TeeDee schreef op dinsdag 23 januari 2007 @ 15:05:
Misschien inmiddels overbodig, maar is dit niks? Voor zover ik het heel even gauw gelezen heb, zorgt dit script ervoor dat het e.e.a. in een chunks wordt gehakt en dan geupload.
Ik zie niks over chunks en het werkt ook middels een gewoon multipart POST form; hence als je browser klapt met een timeout kun je net zo goed opnieuw beginnen. Zover ik kan zien is het gewoon een "compleet" upload-"backend" met wat functies als quota's, progress bars etc maar ik geloof aan de hand van wat ik er van gelezen heb niet dat je het originele probleem van TS er mee oplost.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:04

TeeDee

CQB 241

RobIII schreef op dinsdag 23 januari 2007 @ 16:45:
[...]
Ik zie niks over chunks..
Klopt, ben in de war met een andere pagina die open stond.
het werkt ook middels een gewoon multipart POST form;
Ik zie geen andere manier dan om een multipart POST form te gebruiken als je via HTTP wil uploaden.
hence als je browser klapt met een timeout kun je net zo goed opnieuw beginnen.
Dat hou je altijd. Maar ook met FTP zonder resume.
Zover ik kan zien is het gewoon een "compleet" upload-"backend" met wat functies als quota's, progress bars etc maar ik geloof aan de hand van wat ik er van gelezen heb niet dat je het originele probleem van TS er mee oplost.
Zou kunnen, maar het is het testen/proberen waard. Ik probeer hier mogelijke work-arounds aan te dragen. Het zou kunnen dat door het gebruik van bovenstaande "backend" de connectie langer open blijft of opnieuw geopend wordt zodat voor Telenet gebruikers de upload vergroot wordt.

Offtopic:
Persoonlijk ben ik ook lang bezig geweest met een "large file uploader" om het e.e.a. hufterproof te maken. Ik zit bij een grafisch bedrijf en daar zijn files van > 1 Gb geen uitzondering. Om Mac users uit te gaan leggen dat ze niet via de Finder kunnen uploaden naar onze FTP is erg veel werk. Vandaar de HTTP interface.

Eerst een een simpele upload: hoppa, geheugen op de fileserver vol.
Vervolgens een component: gaat aardig, maar uiteindelijk een limiet fout
Nu gebruik ik deze: vooralsnog geen problemen.

Heart..pumps blood.Has nothing to do with emotion! Bored

Pagina: 1