Avatar billede getaway Nybegynder
13. april 2003 - 22:54 Der er 21 kommentarer og
1 løsning

Upload af fil

Hej derude...

Jeg sidder og roder med et upload-script, og jeg kan ikke faa det til at virke.
Jeg vil oploade dataen (dataet?) til en db, og har faaet hele scriptet til at virke paa naer den vigtigeste del: at faa hele filen uploaded...

Naar jeg proever at uploade, kan jeg se at der bare er foelgende i temp-filen "ÿØÿá  ExifMM*".

En lille bid kode:
***********

$tmp_name = $_FILES[form_data][tmp_name];
$tmp_size = $_FILES[form_data][size];

$data = addslashes(fread(fopen($tmp_name, "r"), $tmp_size));

$result=MYSQL_QUERY("INSERT INTO pictures (description,bin_data,filename,filesize,filetype) "." VALUES ('$_POST[form_description]','$data','".$_FILES[form_data][name]."','".$_FILES[form_data][size]."','".$_FILES[form_data][type]."')");

***********

-Rune
Avatar billede erikjacobsen Ekspert
13. april 2003 - 22:55 #1
din <form> - hvordan ser den ud ?
Avatar billede getaway Nybegynder
13. april 2003 - 22:59 #2
Oeh... den ser fint ud.

Her, saa kan du kigge selv ;)

<form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
File Description:<br>
<input type="text" name="form_description"  size="40">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
<br>File to upload/store in database:<br>
<input type="file" name="form_data"  size="40">
<p><input type="submit" name="submit" value="submit">
</form>
Avatar billede erikjacobsen Ekspert
13. april 2003 - 23:02 #3
Ja den ser fin ud :) Jamen, virket det så ikke. Du ser ud til at uploade et billede...
Avatar billede getaway Nybegynder
13. april 2003 - 23:05 #4
Det eneste jeg faar i min db er en blob paa 47 bytes. Og da billedet er over 200000 bytes kan jeg ikke rigtigt se hvorfor..?
Avatar billede erikjacobsen Ekspert
13. april 2003 - 23:08 #5
Hvordan ser du det er 47 bytes? Du må regne med at der er
"sjove" tegn i, der kan se ud som et ^Z - en slags eof
i dos (windows) systemer
Avatar billede getaway Nybegynder
13. april 2003 - 23:09 #6
phpmyadmin: Binary - do not edit (47 Bytes)
Avatar billede getaway Nybegynder
13. april 2003 - 23:11 #7
Her er de 47 bytes: "ÿØÿá  Exif\0\0MM\0*\0\0\0\0\0\0\0\0\0\0\0Ž\0\0\0\0\0\0\0®".
Avatar billede getaway Nybegynder
13. april 2003 - 23:12 #8
Kiggede lidt paa billedet. Det starter sjovt nok med de samme 47 bytes..?
Avatar billede erikjacobsen Ekspert
13. april 2003 - 23:20 #9
No ok - min gamle phpmyadmin siger ikke hvor mange bytes der er.

Kan du lave nogle testudskrifter.

1) Størrelsen som PHP mener der uploades, din $tmp_size?
2) strlen($data) inden indsættelse?
Avatar billede getaway Nybegynder
13. april 2003 - 23:24 #10
Ja da...

1) 204501 bytes.
2) 68. (snoeft)
Avatar billede erikjacobsen Ekspert
13. april 2003 - 23:32 #11
Ja, snøft du bare. Bare ikke lige ned i tastaturet.

Hvad siger så:  filesize($tmp_name);
Avatar billede getaway Nybegynder
13. april 2003 - 23:33 #12
Den er ogsaa 204501 bytes.
Avatar billede erikjacobsen Ekspert
13. april 2003 - 23:34 #13
drop addslashes - hvor lang er data så (din sql dør sikkert
på det, men vi skal kun lige have længden)
Avatar billede getaway Nybegynder
13. april 2003 - 23:35 #14
Nu er den 47.
Avatar billede erikjacobsen Ekspert
13. april 2003 - 23:37 #15
Ok, så din fread læser kun 47 bytes (addslashes skal gøre
den lidt længere). Det problem synes jeg ikke at have set
før.
Avatar billede getaway Nybegynder
13. april 2003 - 23:38 #16
Heller ikke mig... har du en ide til en loesning?
Avatar billede erikjacobsen Ekspert
13. april 2003 - 23:39 #17
Hov - du må jo køre windows (er der virkelig stadig nogen
tilbage...?)

$data = addslashes(fread(fopen($tmp_name, "rb"), $tmp_size));
Avatar billede getaway Nybegynder
13. april 2003 - 23:44 #18
Haha! Ja, og det virker nu!
Hvordan kan de vaere?

Synes ogsaa lige jeg skal forklare hvorfor jeg bruger Windows:
Jeg har ikke min egen computer (er udvekslingsstudent i USA og havde ikke plads til en computer i kufferten), og jeg har desvaerre ikke raad til en ny (maa ikke faa et job her da jeg ikke har et green card). Saa for tiden bruger jeg min vaertsfamilies computer...

Mange mange tak. Point?
-Rune
Avatar billede erikjacobsen Ekspert
13. april 2003 - 23:47 #19
Nej nej, jeg samler ikke på point. Fra PHP-doc:

Note: The mode may contain the letter 'b'. This is useful only on systems which differentiate between binary and text files (i.e. Windows. It's useless on Unix). If not needed, this will be ignored. You are encouraged to include the 'b' flag in order to make your scripts more portable.

Ok, da. Jeg har da vist også et sted en computer der kører Windows 3.11,
hvis den stadig kan starte. *g*
Avatar billede getaway Nybegynder
13. april 2003 - 23:50 #20
Hehe. Ellers mange tak. Kan man donere point til en der har brug?? Ellers vil jeg selv svare...
Avatar billede erikjacobsen Ekspert
13. april 2003 - 23:52 #21
Tag du dem selv. Point er ikke nær så rare som $$$ ...
Avatar billede getaway Nybegynder
13. april 2003 - 23:53 #22
Hehe. Det er rigtigt. Jeg siger da mange tak for hjaelp + point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester