PDA

Bekijk Volledige Versie : mysql en bestanden



fjab
14/01/04, 18:45
Hallo allemaal,

Ik probeer bestanden te uploaden naar mijn Mysqlserver.
Nu lukt dat uitstekend met plaatjes en .txt bestandjes, maar .exe .pdf
..ppt .mdb geven problemen.
De files moeten dus echt in de database en niet in een dir.
Iemand een suggestie waarom die "simpele" bestanden het wel goed doen en
die andere niet?

bvhd

Franklin

Daniel Tryba
14/01/04, 19:00
fjab <franklin_hatespam_@propane.nl> wrote:
> De files moeten dus echt in de database en niet in een dir.
> Iemand een suggestie waarom die "simpele" bestanden het wel goed doen en
> die andere niet?

Je vergeet allerlei (controle) chars te escapen?

--

Daniel Tryba

Reinoud Horstink
14/01/04, 21:00
fjab wrote:
> Hallo allemaal,
>
> Ik probeer bestanden te uploaden naar mijn Mysqlserver.
> Nu lukt dat uitstekend met plaatjes en .txt bestandjes, maar .exe .pdf
> ..ppt .mdb geven problemen.
> De files moeten dus echt in de database en niet in een dir.
> Iemand een suggestie waarom die "simpele" bestanden het wel goed doen en
> die andere niet?

Mag ik gokken/aannemen dat je met PHP of Perl binaire data probeert te
inserten? Waar gaat het precies fout? Bij het opslaan of uitlezen? Welke
foutmeldingen krijg je?

Reinoud.

Elwin
15/01/04, 13:45
On Wed, 14 Jan 2004 20:49:29 +0100, Reinoud Horstink
<reinoud@MIJNACHTERNAAM.demon.nl> wrote:

>fjab wrote:
>> Hallo allemaal,
>>
>> Ik probeer bestanden te uploaden naar mijn Mysqlserver.
>> Nu lukt dat uitstekend met plaatjes en .txt bestandjes, maar .exe .pdf
>> ..ppt .mdb geven problemen.
>> De files moeten dus echt in de database en niet in een dir.
>> Iemand een suggestie waarom die "simpele" bestanden het wel goed doen en
>> die andere niet?
>
>Mag ik gokken/aannemen dat je met PHP of Perl binaire data probeert te
>inserten? Waar gaat het precies fout? Bij het opslaan of uitlezen? Welke
>foutmeldingen krijg je?
>
>Reinoud.

Ik ga even verder voor Franklin, want eigenlijk was het mijn
probleem..

Het script is geschreven in PHP en heb ik vanaf
http://php.dreamwerx.net/forums/viewtopic.php?t=6 gehaald.

Ook zijn de files die het niet doen alleen exe, pdf en mdb. Met die
files gaat het al fout zodra ik op de knop in het formulier klik. Dan
zegt mijn Mozilla 'This file contains no data'. Internet Explorer gaat
wel naar het script maar zegt dan dat de pagina niet weergegeven kan
worden.

Elwin

Elwin
15/01/04, 14:45
Reinoud Horstink <reinoud@MIJNACHTERNAAM.demon.nl> wrote in message news:<100b7a36i8f0ieb@corp.supernews.com>...
> fjab wrote:
> > Hallo allemaal,
> >
> > Ik probeer bestanden te uploaden naar mijn Mysqlserver.
> > Nu lukt dat uitstekend met plaatjes en .txt bestandjes, maar .exe .pdf
> > ..ppt .mdb geven problemen.
> > De files moeten dus echt in de database en niet in een dir.
> > Iemand een suggestie waarom die "simpele" bestanden het wel goed doen en
> > die andere niet?
>
> Mag ik gokken/aannemen dat je met PHP of Perl binaire data probeert te
> inserten? Waar gaat het precies fout? Bij het opslaan of uitlezen? Welke
> foutmeldingen krijg je?
>
> Reinoud.

Ik ga even verder voor Franklin, want eigenlijk is het mijn probleem:

Ik probeer de bestanden te uploaden met het PHP script wat op
http://php.dreamwerx.net/forums/viewtopic.php?t=6 staat.

De bestanden die fout gaan zijn exe, pdf en zip. Het gaat dan al fout
zodra ik het formulier submit. Mijn Mozilla zegt dan "This file
contains no data" en Internet Explorer gaat wel naar de pagina die
aangegeven wordt in het formulier, maar zegt dan dat deze niet
weergegeven kan worden.

Elwin

Daniel Tryba
15/01/04, 15:00
Elwin <spacefrog@nospam.invalid> wrote:
> Het script is geschreven in PHP en heb ik vanaf
> http://php.dreamwerx.net/forums/viewtopic.php?t=6 gehaald.

Deze loop klopt niet (gaat fout bij alles groter dan 65k):

while (!feof($fp)) {

// Make the data mysql insert safe
$binarydata = addslashes(fread($fp, 65535));

$SQL = "insert into filedata (masterid, filedata) values (";
$SQL .= $fileid . ", '" . $binarydata . "')";

if (!mysql_query($SQL, $linkid)) {
die("Failure to insert binary inode data row!");
}
}

Moet zijn:

if(!feof($fp))
{
$binarydata = addslashes(fread($fp,file_size($SrcPathFile)));

$SQL........
...
}

--

Daniel Tryba

Daniel Tryba
15/01/04, 15:15
Daniel Tryba <news_nl.internet.www.server-side@canopus.nl> wrote:
> $binarydata = addslashes(fread($fp,file_size($SrcPathFile)));

Ohja, het een en ander kan afhankelijk zijn van of magicquotes
aanstaat...

--

Daniel Tryba

Elwin
15/01/04, 17:30
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:bu66dg$ivm$2@news.tue.nl...
> Daniel Tryba <news_nl.internet.www.server-side@canopus.nl> wrote:
> > $binarydata = addslashes(fread($fp,file_size($SrcPathFile)));
>
> Ohja, het een en ander kan afhankelijk zijn van of magicquotes
> aanstaat...
>
> --
>
> Daniel Tryba

Ook dit is het niet... ik heb nu net de mogelijkheid gehad om het vanaf een
aantal computers te (laten) proberen. Op enkele computers geeft is er de
mogelijkheid om PDF te uploaden, maar geen ZIP en EXE (in zowel IE als
Mozilla) en op een andere kan ik in IE ook geen andere bestanden uploaden
dan ik op mijn eigen bak kan..

Dit ligt dus niet echt aan het script is het wel?

Elwin

Daniel Tryba
15/01/04, 21:15
Elwin <spacefrog@nospam.propane.nl> wrote:
>
> Dit ligt dus niet echt aan het script is het wel?
>

Geen idee, show us the source.

--

Daniel Tryba

Elwin
15/01/04, 21:30
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:bu6rmq$p78$1@news.tue.nl...
> Elwin <spacefrog@nospam.propane.nl> wrote:
> >
> > Dit ligt dus niet echt aan het script is het wel?
> >
>
> Geen idee, show us the source.
>
> --
>
> Daniel Tryba

Die is nog steeds hetzelfde als daarstraks (te zien op
http://php.dreamwerx.net/forums/viewtopic.php?t=6), alleen dan heb ik die
loop veranderd zoals jij aangaf:

> while (!feof($fp)) {
>
> // Make the data mysql insert safe
> $binarydata = addslashes(fread($fp, 65535));
>
> $SQL = "insert into filedata (masterid, filedata) values (";
> $SQL .= $fileid . ", '" . $binarydata . "')";
>
> if (!mysql_query($SQL, $linkid)) {
> die("Failure to insert binary inode data row!");
> }
> }
>
> Moet zijn:
>
> if(!feof($fp))
> {
> $binarydata = addslashes(fread($fp,file_size($SrcPathFile)));
>
> $SQL........
> ...
> }

Elwin

Daniel Tryba
15/01/04, 22:45
Elwin <spacefrog@nospam.propane.nl> wrote:
> Die is nog steeds hetzelfde als daarstraks (te zien op
> http://php.dreamwerx.net/forums/viewtopic.php?t=6),

Die werkt gewoon, er moet dus iets anders zijn bij jou. Echter of dat
clientside of serverside is is me nog lange niet duidelijk.

> alleen dan heb ik die loop veranderd zoals jij aangaf:

Dat is bij nader inzien niet noodzakelijk. Files worden in stukken van
65k opgeslagen in de database.

--

Daniel Tryba

Elwin
15/01/04, 23:15
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:bu71el$q0f$1@news.tue.nl...
> Die werkt gewoon, er moet dus iets anders zijn bij jou. Echter of dat
> clientside of serverside is is me nog lange niet duidelijk.

Volgens mij is het inderdaad een clientsize probleem. Ik heb net, alleen
maar omdat ik het niet kan hebben, geprobeerd om een PDF te uploaden en
'tada'... het werkt. Ook lukte het me om een EXE en een ZIP te uploaden (met
Mozilla). Maar hij lijkt zo selectief.. Bij de ene zegt die 'This file
contains no data" en de volgende doet die gewoon..

> > alleen dan heb ik die loop veranderd zoals jij aangaf:
>
> Dat is bij nader inzien niet noodzakelijk. Files worden in stukken van
> 65k opgeslagen in de database.

Oké, dat heb ik dus teruggezet...

> Daniel Tryba

Mocht je het zelf willen proberen dan staat die op
http://spacefrog.ath.cx/extra/phphulp/upload/

Elwin

Daniel Tryba
16/01/04, 01:00
Elwin <spacefrog@nospam.propane.nl> wrote:
>> Die werkt gewoon, er moet dus iets anders zijn bij jou. Echter of dat
>> clientside of serverside is is me nog lange niet duidelijk.
>
> Volgens mij is het inderdaad een clientsize probleem. Ik heb net, alleen
> maar omdat ik het niet kan hebben, geprobeerd om een PDF te uploaden en
> 'tada'... het werkt. Ook lukte het me om een EXE en een ZIP te uploaden (met
> Mozilla). Maar hij lijkt zo selectief.. Bij de ene zegt die 'This file
> contains no data" en de volgende doet die gewoon..
>
> Mocht je het zelf willen proberen dan staat die op
> http://spacefrog.ath.cx/extra/phphulp/upload/

Hmmm na een jpg en een paar exe met verschillende browsers (mozilla,
konqueror en opera) kan ik geen probleem ontdekken, de geuploade en
gedownloade binaries zijn identiek.

Lijkt erop dat het de client, software op de client of een proxy wel
eens het probleem zou kunnen zijn. Tijd om te gaan debuggen met tcpdump
lijkt me :)

--

Daniel Tryba

Nico Schuyt
16/01/04, 12:15
Elwin wrote:
> Ik ga even verder voor Franklin, want eigenlijk is het mijn probleem:
> Ik probeer de bestanden te uploaden met het PHP script wat op
> http://php.dreamwerx.net/forums/viewtopic.php?t=6 staat.

Sorry, dit gaat mijn kennis van PHP te boven :-)
Wel een vraagje: Waarom wil je die files zelf in de database laden in plaats
van alleen een URL. Lijkt me een stuk eenvoudiger.
Nico

Elwin
16/01/04, 16:00
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:bu795l$rqv$1@news.tue.nl...
>
> Hmmm na een jpg en een paar exe met verschillende browsers (mozilla,
> konqueror en opera) kan ik geen probleem ontdekken, de geuploade en
> gedownloade binaries zijn identiek.
>
> Lijkt erop dat het de client, software op de client of een proxy wel
> eens het probleem zou kunnen zijn. Tijd om te gaan debuggen met tcpdump
> lijkt me :)
>
> --
>
> Daniel Tryba
>

Ik ben er ondertussen achter denk ik.. ik heb het zitten proberen, maar een
bestand van 513 kb werkt niet en een bestand van 512 kb werkt nog wel (op
zich geen raar getal natuurlijk.. :D). En dan maakt het niet uit welke
extentie een file heeft. Dit is het geval in IE, Mozilla, Opera en Netscape.

Is er een instelling in de httpd.conf die zegt dat het maximaal 512 kb mag
zijn? (in php.ini heb ik die standaard waarde voor uploaden van twee mb al
veranderd, maar aan die twee mb komen we toch niet...)

Elwin

Elwin
16/01/04, 16:00
"Nico Schuyt" <nschuyt@hotmail.com> schreef in bericht
news:4007c47c$0$95848$1b62eedf@news.wanadoo.nl...
> Sorry, dit gaat mijn kennis van PHP te boven :-)
> Wel een vraagje: Waarom wil je die files zelf in de database laden in
plaats
> van alleen een URL. Lijkt me een stuk eenvoudiger.
> Nico
>

Het is inderdaad een stuk eenvoudiger, maar het probleem is dan dat de files
met een diepe link te benaderen zijn (openbaar). En voor bepaalde bestanden
die gebruikers gaan uploaden op de website is er de wens om ze niet openbaar
te hebben, ivm concurrentie. En door ze zo op te slaan gaat dit ook goed.

Elwin

Elwin
16/01/04, 16:30
"Elwin" <spacefrog@nospam.propane.nl> schreef in bericht
news:bu8tve$tpb$1@nl-news.euro.net...
> Ik ben er ondertussen achter denk ik.. ik heb het zitten proberen, maar
een
> bestand van 513 kb werkt niet en een bestand van 512 kb werkt nog wel (op
> zich geen raar getal natuurlijk.. :D). En dan maakt het niet uit welke
> extentie een file heeft. Dit is het geval in IE, Mozilla, Opera en
Netscape.
>
> Is er een instelling in de httpd.conf die zegt dat het maximaal 512 kb mag
> zijn? (in php.ini heb ik die standaard waarde voor uploaden van twee mb al
> veranderd, maar aan die twee mb komen we toch niet...)
>
> Elwin
>

En dit heb ik (met hulp van Franklin) nu ook uitgevonden... het is de waarde
LimitRequestBody in de php.conf file in /etc/httpd/conf.d/. Deze staat
standaard op 512 kb en nu op 2 MB.. werken hoor.. :D

We hebben het gevonden op de volgende pagina
http://php.us.themoes.org/manual/nl/features.file-upload.php gepost door
travis dot lewis at amd dot com.

Daniel, in ieder geval bedankt voor je hulp! :D

Elwin

Nico Schuyt
16/01/04, 16:45
Elwin wrote:
> "Nico Schuyt" schreef
>> Wel een vraagje: Waarom wil je die files zelf in de database laden
>> in plaats van alleen een URL. Lijkt me een stuk eenvoudiger.

> Het is inderdaad een stuk eenvoudiger, maar het probleem is dan dat
> de files met een diepe link te benaderen zijn (openbaar). En voor
> bepaalde bestanden die gebruikers gaan uploaden op de website is er
> de wens om ze niet openbaar te hebben, ivm concurrentie. En door ze
> zo op te slaan gaat dit ook goed.

Duidelijk. Bedankt!
Kun je het overigens niet oplossen door elk item bij upload door PHP te
laten renamen naar een uniek 10-cijferig nummer? Bestand geheim.pdf wordt
1457283928.pdf (of 54CF69KQ89.pdf)
Bij de download kan dan weer de oorspronkelijke naam worden toegekend.
Nico

Elwin
16/01/04, 16:45
"Nico Schuyt" <nschuyt@hotmail.com> schreef in bericht
news:40080407$0$132$3b62cedd@news.wanadoo.nl...
> Duidelijk. Bedankt!
> Kun je het overigens niet oplossen door elk item bij upload door PHP te
> laten renamen naar een uniek 10-cijferig nummer? Bestand geheim.pdf wordt
> 1457283928.pdf (of 54CF69KQ89.pdf)
> Bij de download kan dan weer de oorspronkelijke naam worden toegekend.
> Nico

Het is al opgelost... :D
Zie mijn post van 16:17 uur in het andere staartje van deze draad..

Thx anyway! :D

Elwin