[PHP]Bestanden uploaden naar mysql database

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil dat ik bestanden kan uploaden naar mijn eigen server toe.
Dit wil ik doen via een blob in de mysql database.
Nu heb ik de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
include ("connect.php")
?>
<html>
<body>
<form method="post" action="<?php echo($_SERVER["PHP_SELF"]);?>" enctype="multipart/form-data">    
beschrijving:<br>    <input type="text" name="description"  size="40">
<p>Bestand om in de database te zetten:<br>    <input type="file" name="file"  size="40">    
<p><input type="submit" value="submit">    </form>

<?php
if (empty ($_POST)){
    exit();
}else{
    $description    =        $_POST["description"];
    $name                    =    $_FILES["file"]["tmp_name"];
    $type                    =    $_FILES["file"]["type"];
    $size                    =    $_FILES["file"]["size"];
    $data                    =    file_get_contents($_FILES["file"]["tmp_name"]);

    $result=MYSQL_QUERY("INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) "."VALUES 
    ('$description','$data','$name','$size','$type')");
    echo ("het uploaden is gelukt!!");

}
?>
</BODY></HTML>


Ik krijg geen foutmeldingen tijdens het uploaden en de pagina laad ook goed en als result krijg ik:
Het uploaden is gelukt!!
Niets aan de hand zou je zeggen.

Nu is het zo dat er helemaal niets, op de description na, in de database gezet wordt. Als ik via een simpel script via een tabel de inhoud van de database wil weergeven of via phpmyadmin de database bekijk staat er, op de description na, niets in.
Het (of is het de) Blob heeft een grote van altijd 0 byte er staat dus niets in.
Ook zie ik via statbar dat er data naar de server wordt gestuurt na het drukken op submit dus dat zou ook goed moeten gaan.

Wat doe ik fout, ik krijg helemaal geen foutmeldingen dus weet ook niet waar ik moet zoeken.

Acties:
  • 0 Henk 'm!

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 17-07 14:45
Wat dacht je van je query in $sql gooien, dat echoën en achter mysql_query() dit te zetten:
PHP:
1
mysql_query($sql) or die(mysql_error());

Met var_dump($_FILES); kun je goed zien wat er allemaal wordt meegestuurd...

Dan kun je gaan debuggen en moet je toch een heel eind komen...

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Je zou kunnen controleren met is_uploaded_file. Verder is het ook handig om alle waarden met mysql_escape_string te bewerken voordat je ze in de query zet. Dan gaat dat iig niet fout. Ook kun je boven in je code error_reporting(E_ALL); zetten om alle errormelding te laten weergeven.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb bovenstaand geprobeerd, ik ben nog niet zo thuis met php vooral met debugging enzo.

Als ik error_reporting(E_ALL); doe krijg ik na het drukken op submit dat de query leeg is!!!!
Als ik var_dump($_FILES); doe krijg is als array:
code:
1
2
3
4
array(1) { ["data"]=>  array(5) { ["name"]=>  string(8) "Les1.ppt" ["type"]=>  
string(29) "application/vnd.ms-powerpoint" ["tmp_name"]=>  string(29)
 "C:\PHP\uploadtemp\php1BE7.tmp"
 ["error"]=>  int(0) ["size"]=>  int(117248) } }

Spreekt dit mekaar niet enorm tegen?

Het blijkt dus dat de data niet juist in de database wordt opgeslagen.
Ik heb een andere methode geprobeerd die wel werkt bij gewone tekst opslaan, deze draait dus al op mijn server:
code:
1
2
3
4
5
6
7
8
    $query="INSERT INTO binary_data (description, bin_data, filename, filesize, filetype) ";
    $query .= "VALUES ('";
    $query .= $_POST["description"] ."', '" ;
    $query .= file_get_contents($_FILES["data"]["tmp_name"]) ."', '" ;
    $query .= $_FILES["data"]["tmp_name"] ."', '" ;
    $query .= $_FILES["data"]["size"] ."', '" ;
    $query .= $_FILES["data"]["type"] ."');" ;
    $result = mysql_query($query) or die ("Fout: " .mysql_error());

nu krijg ik als resultaat via mysql_error:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '¦·kê}}§Ø£ÔF' at line 1

Wat betekend '¦·kê}}§Ø£ÔF' nou weer, das niets volgens google.

[ Voor 68% gewijzigd door Verwijderd op 20-02-2005 22:34 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Dat is je data ;)
Bekijk de PHP/MySQL documentatie eens, en dan met name het stuk over blobs ;)

"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


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goh, dat ik daar niet aan gedacht heb.
De server kijkt nu natuurlijk naar de binary data van het bestand, addslashes ervoor zetten!
Ik ben eruit, en het script werkt nu ik kan eindelijk file's uploaden.

Trouwens onbekende bestanden voor mijn server, zoals pdf bestanden slikt ie niet.
Vaag.
Pagina: 1