binäre dateien per php in mysql laden

binäre dateien per php in mysql laden

am 02.03.2005 15:49:46 von guch

Hallo Leute,

ich will über ein PHP-Skript binäre Dateien in eine MySQL-DAtenbank
laden.
Dafür verwende ich die Übergabe mittels "$_POST[...]" bzw.
"$_FILES"(hab schon vieles ausprobiert).
Wenn ich den mysql-Befehl ohne Varible ausführe (auf der shell),
funktioniert er, wenn ich den Befehl im PHP-Skript mit einer Variable
ausführe gelingt es nicht. Wie muss ich den INSERT-Befehl genau
gestalten? Oder welche php.ini-Einstellungen sind zu beachten?

vielen Dank für evtl. Antwort

Christian
Anbei den code-Ausschnitt:
















$file=$_POST["file"];
if(isset($_POST['submit']))
{
if(!empty($_FILES['file']['name']))
{
if($_FILES['file']['error'] === 0)

$db = @mysql_connect("localhost", "guch", "pass") or die
("con");
mysql_select_db("binary_files", $db) or die(mysql_errno() .
": " .
mysql_error() . "
");
$sql = "INSERT INTO tbl_Files (bin_data) VALUES
(LOAD_FILE(".$_FILES['file']."))";
mysql_query($sql) or die ("query");

}
else
{
echo 'Error: '.$_FILES['file']['error'];
}
}
else
{
echo 'Bitte wählen Sie eine Datei aus!';
}

Re: binäre dateien per php in mysql laden

am 02.03.2005 16:08:56 von Joerg Behrens

--
--
TakeNet GmbH Mobil: 0171/60 57 963
D-97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025


"christian" schrieb im Newsbeitrag
news:a685c51f.0503020649.49f16703@posting.google.com...
> Hallo Leute,
>
> ich will über ein PHP-Skript binäre Dateien in eine MySQL-DAtenbank
> laden.
> Dafür verwende ich die Übergabe mittels "$_POST[...]" bzw.
> "$_FILES"(hab schon vieles ausprobiert).
> Wenn ich den mysql-Befehl ohne Varible ausführe (auf der shell),
> funktioniert er, wenn ich den Befehl im PHP-Skript mit einer Variable
> ausführe gelingt es nicht. Wie muss ich den INSERT-Befehl genau
> gestalten? Oder welche php.ini-Einstellungen sind zu beachten?
>
> vielen Dank für evtl. Antwort
>
> Christian
> Anbei den code-Ausschnitt:
>
>


>
>
>
>
>
>
>
>

>
>
>

>

>
> >
> $file=$_POST["file"];
> if(isset($_POST['submit']))
> {
> if(!empty($_FILES['file']['name']))
> {
> if($_FILES['file']['error'] === 0)
>
> $db = @mysql_connect("localhost", "guch", "pass") or die
> ("con");
> mysql_select_db("binary_files", $db) or die(mysql_errno() .
> ": " .
> mysql_error() . "
");
> $sql = "INSERT INTO tbl_Files (bin_data) VALUES
> (LOAD_FILE(".$_FILES['file']."))";

ein vardump($_FILES['file']) sollte zeigen warum das nicht geht.

Weitere Fallstricke koennten dann sein.
- User hat keine Rechte fuer load_file()
- max_packet_size ( ich Rate hier mal)

Ersteres koennte man umgehen in dem man den Inhalt der Datei in eine VAR
schreibt und dann diesen Inhalt in eine Query tut.

Gruss
Joerg

Re: binäre dateien per php in mysql laden

am 04.03.2005 10:40:22 von guch

Hallo Joerg,

danke für die Antwort.
ein var_dump liefert folgendes:

array(5) { ["name"]=> string(14) "fussball05.jpg" ["type"]=>
string(10) "image/jpeg" ["tmp_name"]=> string(18)
"/var/tmp/php3lPQax" ["error"]=> int(0) ["size"]=> int(24434) }

Mir fällt da nichts besonderes auf, außer dass im "name" der Pfad
nicht vorhanden ist (/tmp/fussball05.jpg).
Wenn ich mit dem user und dem Passwort, so wie im PHP-skript
angegeben, auf der MySQL-shell arbeite, dann funktionierts. Allerdings
habe ich hier keine Variable.

Die maximale upload-Größe liegt auch weit über der Bildergröße.
Ich werd mal versuchen, den Inhalt in eine var zu schrieben.

Grüße
Christian
"Joerg Behrens" wrote in message news:<38m33sF5q84vfU1@individual.net>...
> --
> --
> TakeNet GmbH Mobil: 0171/60 57 963
> D-97080 Wuerzburg Tel: +49 931 903-2243
> Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
>
>
> "christian" schrieb im Newsbeitrag
> news:a685c51f.0503020649.49f16703@posting.google.com...
> > Hallo Leute,
> >
> > ich will über ein PHP-Skript binäre Dateien in eine MySQL-DAtenbank
> > laden.
> > Dafür verwende ich die Übergabe mittels "$_POST[...]" bzw.
> > "$_FILES"(hab schon vieles ausprobiert).
> > Wenn ich den mysql-Befehl ohne Varible ausführe (auf der shell),
> > funktioniert er, wenn ich den Befehl im PHP-Skript mit einer Variable
> > ausführe gelingt es nicht. Wie muss ich den INSERT-Befehl genau
> > gestalten? Oder welche php.ini-Einstellungen sind zu beachten?
> >
> > vielen Dank für evtl. Antwort
> >
> > Christian
> > Anbei den code-Ausschnitt:
> >
> >


> >
> >
> >
> >
> >
> >
> >
> >

> >
> >
> >

> >

> >
> > > >
> > $file=$_POST["file"];
> > if(isset($_POST['submit']))
> > {
> > if(!empty($_FILES['file']['name']))
> > {
> > if($_FILES['file']['error'] === 0)
> >
> > $db = @mysql_connect("localhost", "guch", "pass") or die
> > ("con");
> > mysql_select_db("binary_files", $db) or die(mysql_errno() .
> > ": " .
> > mysql_error() . "
");
> > $sql = "INSERT INTO tbl_Files (bin_data) VALUES
> > (LOAD_FILE(".$_FILES['file']."))";
>
> ein vardump($_FILES['file']) sollte zeigen warum das nicht geht.
>
> Weitere Fallstricke koennten dann sein.
> - User hat keine Rechte fuer load_file()
> - max_packet_size ( ich Rate hier mal)
>
> Ersteres koennte man umgehen in dem man den Inhalt der Datei in eine VAR
> schreibt und dann diesen Inhalt in eine Query tut.
>
> Gruss
> Joerg

Re: binäre dateien per php in mysql laden

am 04.03.2005 10:46:15 von guch

Hallo Jörg (nochmals)

ich habs jetzt zum Laufen gebracht.
Ich muss beim load_file mit dem temporären Namen arbeiten:
LOAD_FILE($_FILES[tmp_name]

danke noch mals
Christian


"Joerg Behrens" wrote in message news:<38m33sF5q84vfU1@individual.net>...
> --
> --
> TakeNet GmbH Mobil: 0171/60 57 963
> D-97080 Wuerzburg Tel: +49 931 903-2243
> Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
>
>
> "christian" schrieb im Newsbeitrag
> news:a685c51f.0503020649.49f16703@posting.google.com...
> > Hallo Leute,
> >
> > ich will über ein PHP-Skript binäre Dateien in eine MySQL-DAtenbank
> > laden.
> > Dafür verwende ich die Übergabe mittels "$_POST[...]" bzw.
> > "$_FILES"(hab schon vieles ausprobiert).
> > Wenn ich den mysql-Befehl ohne Varible ausführe (auf der shell),
> > funktioniert er, wenn ich den Befehl im PHP-Skript mit einer Variable
> > ausführe gelingt es nicht. Wie muss ich den INSERT-Befehl genau
> > gestalten? Oder welche php.ini-Einstellungen sind zu beachten?
> >
> > vielen Dank für evtl. Antwort
> >
> > Christian
> > Anbei den code-Ausschnitt:
> >
> >


> >
> >
> >
> >
> >
> >
> >
> >

> >
> >
> >

> >

> >
> > > >
> > $file=$_POST["file"];
> > if(isset($_POST['submit']))
> > {
> > if(!empty($_FILES['file']['name']))
> > {
> > if($_FILES['file']['error'] === 0)
> >
> > $db = @mysql_connect("localhost", "guch", "pass") or die
> > ("con");
> > mysql_select_db("binary_files", $db) or die(mysql_errno() .
> > ": " .
> > mysql_error() . "
");
> > $sql = "INSERT INTO tbl_Files (bin_data) VALUES
> > (LOAD_FILE(".$_FILES['file']."))";
>
> ein vardump($_FILES['file']) sollte zeigen warum das nicht geht.
>
> Weitere Fallstricke koennten dann sein.
> - User hat keine Rechte fuer load_file()
> - max_packet_size ( ich Rate hier mal)
>
> Ersteres koennte man umgehen in dem man den Inhalt der Datei in eine VAR
> schreibt und dann diesen Inhalt in eine Query tut.
>
> Gruss
> Joerg