[php] grote file uploaden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:55

Snow_King

Konijn is stoer!

Topicstarter
Hoi,

Ik ben bezig met een website waar users maps van een game kunnen adden en vervolgens ook kunnen uploaden..

Nu wil ik het zo makkelijk houden en wilde ik de gebruikers de maps laten uploaden via http, maar dit wil niet echt.

In php staat de max_upload_size op 2M, safemode uit.

Ik dacht simpel door ini_set("upload_max_filesize", "150M"); bovenin mijn script te zetten dit probleem op te lossen, maar helaas, als ik de config uitlees komt er nog steeds 2M te staan.

Deze maps zijn ongeveer max 50MB groot

Nu moet ik dus iets verzinnen...

Ik ben zelf _geen_ eigenaar van die server en heb geen shell-access.
Ik kan dus geen temporary ftp accounts aanmaken oid, dat is erg jammer.

Ik heb er ook aan gedacht dat users zelf een mirror moeten opzetten en dat elke 3uur een script draait wat met een fopen de files allemaal download en dat de gebruikers dan een mailtje krijgen met de melding dat de file is gemirrored, maar hier kleven ook nadelen aan, want je moet een directe url hebben naar de file.

Wie heeft er een oplossing voor dit dilemma?

[ Voor 4% gewijzigd door Snow_King op 16-11-2003 22:23 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
je moet 2 waarden veranderen. max_upload_filesize oid, en de max_postdata, oid.

Dit kun je het beste even vragen aan de beheerder van de machine, lijkt me..

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Een simpele oplossing is een andere hoster nemen :), maar dat had je vast zelf ook wel bedacht. Wat je zou kunnen doen is een clientside programmatje maken die het bestand opdeelt in brokken van 2MB en ze omstebeurten upload. Dit programma kan dan ook feedback geven over hoe ver de upload is, en dat is bij bestanden van die afmeting absoluut geen overbodige luxe. Verder kan van elk blok makkelijk worden gecontroleerd of deze juizt is over gekomen met bijv md5. Aan de serverkant kun je deze brokken vervolgens weer met php aan elkaar nico-en tot het oorspronkelijke bestand.

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!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Snow_King schreef op 16 november 2003 @ 22:21:
Ik dacht simpel door ini_set("upload_max_filesize", "150M"); bovenin mijn script te zetten dit probleem op te lossen, maar helaas, als ik de config uitlees komt er nog steeds 2M te staan.
dat gaat ook niet lukken, want als je even nadenkt wordt de file eerst geupload en pas dan gaat de parser aan de slag met je php file ;)
dus of het is je hosting provider liev aankijken O+ (denk alleen niet dat die daar gevoelig voor is :P) of een ftp achtig iets gebruiken. Heb je tevens nog resume mogelijkheden enzo ;)

Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Aangezien je zelf geen eigenaar bent van de server, zit er dus niks anders op dan te uploaden via je eigen ftp account (of je provider moet zo lief zijn een extra acount aan te maken met alleen schrijf rechten).

Als je echter url_fopen aan hebt staan in php.ini kan het evt. ook remote.

Gebruikers kunnen hun gebruikersnaam, wachtwoord en remote_path opslaan in je database.

Vervolgens kan jij dan:
PHP:
1
2
3
$result = sql_query("SELECT user, passs, path FROM table WHERE id =' '");
list($user, $pass, path) = mysql_fetch_row($result);
fopen("ftp://".$user.":".$pass."@".$path);

Op die manier zijn gebruikernaam en wachtwoord niet direct uit je code te halen.
Wel uit je database. maar daar zou je evt. een soort van omkeerbare encryptie over heel kunnen halen.

edit:

Welke hoster heb je eigenlijk?
Ik ben al maanden op zoek naar een betaalbare host die save_mode uit heeft / wel goed geconfigureerd

[ Voor 14% gewijzigd door Suepahfly op 16-11-2003 22:35 ]


Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:55

Snow_King

Konijn is stoer!

Topicstarter
Ik heb nu in mijn control panel een optie gevonden om ftp users aan te maken..

Nu dacht ik als iemand nou zijn map moet uploaden naar die ftp en dan doorgeeft aan het php script welke filename zijn map heeft, dan verhuist php de file wel naar de goede dir, maar...

Hoe kan je een dir zo chmodden dat je wel een file kan maken, maar niet kan verwijderen?

Acties:
  • 0 Henk 'm!

  • DUX
  • Registratie: September 2002
  • Laatst online: 16:59

DUX

blijft ook nu voor Oranje

Je kunt het ook elders zoeken, namelijk op bedrijven die online space aanbieden. Dit was een paar jaar terug booming business, maar nu toch een stuk moeilijker. Heb even gezocht met Google, maar het zijn toch aanzienlijk minder sites.

Ik doel dan echt op een Online Hard Drive-site, al zou je ook de gewone webspace providers als GeoCities kunnen gebruiken.

Hier een klein lijstje met ruimte-aanbieders.

.    < G o o o o o o o o g l e >
Vorige 1 2 3 4 5 6 7 8 Volgende


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Snow_King schreef op 16 november 2003 @ 22:34:
Ik heb nu in mijn control panel een optie gevonden om ftp users aan te maken..

Nu dacht ik als iemand nou zijn map moet uploaden naar die ftp en dan doorgeeft aan het php script welke filename zijn map heeft, dan verhuist php de file wel naar de goede dir, maar...

Hoe kan je een dir zo chmodden dat je wel een file kan maken, maar niet kan verwijderen?
chmod(0???);
Ik zal zo even voor je kijken

/edit

chmod(722);


Owner: alles
group en world: write

[ Voor 7% gewijzigd door Suepahfly op 16-11-2003 22:39 ]


Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:55

Snow_King

Konijn is stoer!

Topicstarter
helaas, 722 werkt niet.

Maar.. als ik die max_upload_size omhoog krijg naar 50M, gaat dat wel lukken via HTTP protocol?

Acties:
  • 0 Henk 'm!

  • DUX
  • Registratie: September 2002
  • Laatst online: 16:59

DUX

blijft ook nu voor Oranje

Snow_King schreef op 16 november 2003 @ 22:45:
helaas, 722 werkt niet.

Maar.. als ik die max_upload_size omhoog krijg naar 50M, gaat dat wel lukken via HTTP protocol?
Je hebt ook nog te maken met een time-out waarde in php.ini. Deze geeft aan hoe lang een script maximaal mag runnen. Ik weet de waarde niet uit m'n hoofd, maar zal ook even kijken.

.    < G o o o o o o o o g l e >
Vorige 1 2 3 4 5 6 7 8 Volgende


Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:55

Snow_King

Konijn is stoer!

Topicstarter
DUX schreef op 16 november 2003 @ 22:51:
[...]

Je hebt ook nog te maken met een time-out waarde in php.ini. Deze geeft aan hoe lang een script maximaal mag runnen. Ik weet de waarde niet uit m'n hoofd, maar zal ook even kijken.
het script gaat pas runnen als de file is ge-upload dacht ik?

Acties:
  • 0 Henk 'm!

  • DUX
  • Registratie: September 2002
  • Laatst online: 16:59

DUX

blijft ook nu voor Oranje

Hmm, daar zeg je wat....Te lang geleden dat ik ermee geknoeid heb :p

Maar het kan wel via http. Ik heb zelf ook een servertje draaien en ook een bestandsbeheersysteem en daar kan ik ook flinke bestanden heen sturen.

[ Voor 81% gewijzigd door DUX op 16-11-2003 22:56 ]

.    < G o o o o o o o o g l e >
Vorige 1 2 3 4 5 6 7 8 Volgende


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Snow_King schreef op 16 november 2003 @ 22:54:
[...]


het script gaat pas runnen als de file is ge-upload dacht ik?
klopt, maar je hebt met meerdere timeouts te maken, client side is dan in dit geval niet echt jouw probleem, of althans, mocht er een browser zijn die een timeout geeft bij het uploaden....
timeout van de webserver zelf, kan soms ingesteld zijn dat een sessie max zo lang mag duren. En de php timeout lijkt me niet echt relevant in dit geval dus, want dan is idd de file al aanwezig ergens op de server :)

Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:55

Snow_King

Konijn is stoer!

Topicstarter
ik denk alleen dat mijn hosting provider moeilijk gaat doen.

Ik kan natuurlijk ook gaan kijken naar Java :)
Maar verder naast java geen slimme oplossingen?

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Snow_King schreef op 16 november 2003 @ 22:54:
[...]


het script gaat pas runnen als de file is ge-upload dacht ik?
Volgens mij niet; het script moet namelijk de post parameters direct opvangen (of zou de webserver dit al cachende doen :?)

zomaar een gooi; PHP ondersteund toch sockets; kun je geen PHP script (zonder timeout) een ftpserver na laten doen; dit zou dan op een andere poort kunnen :?

[ Voor 48% gewijzigd door Spider.007 op 17-11-2003 00:07 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Snow_King schreef op 16 november 2003 @ 22:59:
ik denk alleen dat mijn hosting provider moeilijk gaat doen.

Ik kan natuurlijk ook gaan kijken naar Java :)
Maar verder naast java geen slimme oplossingen?
lijkt me met java (client en server side) wel goed te doen eigenlijk.
laat bijvoorbeeld een servlet een socket openen waarop de client met een applet connect en dan de data overpompen. (let wel op diverse beveiligings risicos)

Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
dan heb je nog steeds het probleem van webserver timeout... Bij het idee van spider net hetzelfde, maar daar krijg je ook nog eens te maken met de timeout van php zelf.

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:55

Snow_King

Konijn is stoer!

Topicstarter
Ik heb mijn hosting provider gemaild.

Of de max_post_size op 60MB kan, de memory_limit op 60MB en ook demax_upload_size op 60MB, vervolgens de time-out op 180sec.

php gaat pas lopen als de file is ge-upload, hij krijgt de file als een POST var door gestuurd, vandaar..

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Erkens schreef op 17 november 2003 @ 00:09:
[...]

lijkt me met java (client en server side) wel goed te doen eigenlijk.
laat bijvoorbeeld een servlet een socket openen waarop de client met een applet connect en dan de data overpompen. (let wel op diverse beveiligings risicos)
Hoef je helemaal geen servlet voor te maken. Waneer je het bestand in kleine brokken via een normaal http request aanbied hoef je op de server helemaal niks te doen (behalve dan een php script die die afzonderlijke blokken accepteerd en weer bij elkaar plakt). (Maar dat zei ik al in de tweede reply ;) )

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!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Janoz schreef op 17 november 2003 @ 10:23:
[...]


Hoef je helemaal geen servlet voor te maken. Waneer je het bestand in kleine brokken via een normaal http request aanbied hoef je op de server helemaal niks te doen (behalve dan een php script die die afzonderlijke blokken accepteerd en weer bij elkaar plakt). (Maar dat zei ik al in de tweede reply ;) )
tuurlijk, maar dan moet je clientside meer werk verichten ;)

Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:55

Snow_King

Konijn is stoer!

Topicstarter
Janoz schreef op 17 november 2003 @ 10:23:
[...]


Hoef je helemaal geen servlet voor te maken. Waneer je het bestand in kleine brokken via een normaal http request aanbied hoef je op de server helemaal niks te doen (behalve dan een php script die die afzonderlijke blokken accepteerd en weer bij elkaar plakt). (Maar dat zei ik al in de tweede reply ;) )
ja, maar ik heb totaal geen kennis van Java en ik vraag me ook af hoe ik dit server-side weer in elkaar plak :?

Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:55

Snow_King

Konijn is stoer!

Topicstarter
Suepahfly schreef op 16 november 2003 @ 22:33:
Aangezien je zelf geen eigenaar bent van de server, zit er dus niks anders op dan te uploaden via je eigen ftp account (of je provider moet zo lief zijn een extra acount aan te maken met alleen schrijf rechten).

Als je echter url_fopen aan hebt staan in php.ini kan het evt. ook remote.

Gebruikers kunnen hun gebruikersnaam, wachtwoord en remote_path opslaan in je database.

Vervolgens kan jij dan:
PHP:
1
2
3
$result = sql_query("SELECT user, passs, path FROM table WHERE id =' '");
list($user, $pass, path) = mysql_fetch_row($result);
fopen("ftp://".$user.":".$pass."@".$path);

Op die manier zijn gebruikernaam en wachtwoord niet direct uit je code te halen.
Wel uit je database. maar daar zou je evt. een soort van omkeerbare encryptie over heel kunnen halen.

edit:

Welke hoster heb je eigenlijk?
Ik ben al maanden op zoek naar een betaalbare host die save_mode uit heeft / wel goed geconfigureerd
PCextreme.nl, 2GB hosting en unlimited traffic :)

Maar, ik heb nu het volgende voor elkaar gekregen via een .htaccess
http://www.bfmaps.nl/info.php

als je kijkt zie je dus dat de limits allemaal omhoog zijn, alleen de POST memory op 8M blijft.
Maar een file komt via $_FILES en niet $_POST, dus dat maakt toch niet uit?
Ik probeer een file van 40MB te uploaden en dan stopt ie er ineens mee, zonder msg ga gewoon weer terug naar het upload formpje

Acties:
  • 0 Henk 'm!

  • nxt
  • Registratie: November 2001
  • Laatst online: 24-08 15:34

nxt

Maar een file komt via $_FILES en niet $_POST, dus dat maakt toch niet uit?
volgens mij wordt een file wel degelijk via de post variabelen verzonden
en ik denk dat de waarde van post_max_size dus wel uitmaakt

Acties:
  • 0 Henk 'm!

  • DUX
  • Registratie: September 2002
  • Laatst online: 16:59

DUX

blijft ook nu voor Oranje

Dat klopt: gaat inderdaad via POST. Ondersteunende link

.    < G o o o o o o o o g l e >
Vorige 1 2 3 4 5 6 7 8 Volgende


Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:55

Snow_King

Konijn is stoer!

Topicstarter
het is opgelost :)

Ik kon via Plesk (Webadmin panel) een extra ftp account aanmaken.
Op hotscripts.com vond ik een java-applet wat files upload naar ftp.

Ik gebruik nu dit java-applet om te file te uploaden en later verplaatst php deze file naar de goede directory.

Bedankt allen voor jullie hulp!

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Erkens schreef op 17 november 2003 @ 10:35:
[...]

tuurlijk, maar dan moet je clientside meer werk verichten ;)
Als je op de client een applet maakt die rechten heeft om een bestand te openen en ook nog een verbinding met de server kan maken dan is deze connectie ombouwen naar een http-post waarschijnlijk minder werk dan een extra servlet schrijven en toestemming van de hoster krijgen om deze daar ook te draaien. ;)

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

Pagina: 1