WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   PHP-Problem - Bildübermittlung (http://www.wcm.at/forum/showthread.php?t=56675)

MUCH 17.05.2002 01:34

PHP-Problem - Bildübermittlung
 
Liebe Gemeinde,


schön langsdam kommt meine Datenbank auf Touren (endlich harmonieren der Apache mit MySQL & PHP) - danke wegen des Links zu www.NuSphere.com


Die Voraussetzungen:
1. Datenbank unter mySQL erfolgreich angelegt
2. dazu eine Tabelle - dies beinhaltet die "VARCHAR"-Felder wie Name, Adresse, etc. UND ein Feld namens "Bild" vom Typ BLOB


Ich habe für PHP im Internet eine Eingabemaske gefunden - http://www.blindschleiche.de/Artikel...ysql-einf.php3 - und angepasst, wo eben Daten eingegeben werden können, die dann in meine Datenbank wandern.
NUR: Wie ermögliche ich die Übernahme eines Bildes?
(Es wird im Datensatz nicht das Bild als BLOB eingefügt, sondern nur die Ladeadresse - z.B.: C:\Bilder\Haus.jpg :( )



Hier ein Auszug aus dem PHP, wo die Dateneingabe passiert, das Problem mit dem BILD aber nicht klappt:

.
.
.


<form action= <? echo $PHP_SELF ?>>
<pre>
<input type=hidden name=funktion value= <? echo $funktion ?>>

Kontaktperson: <input type=text name=K_person value= <? echo $K_person ?>>
Strasse mit Hausnummer: <input type=text name=Str value= <? echo $Str ?>>
Ort: <input type=text name=Ort value= <? echo $Ort ?>>

Bild anfügen: <input type="hidden" name="MAX_FILE_SIZE" value="2097152">
<input type="file" class="bginput" name=Bild>


<input type=submit value= <? echo $funktion ?>> </pre>
</form>

.
.
.

Herzlichen Dank für Eure Mühe!!!

allwissende Müllhalde 17.05.2002 01:44

Mir fällt nur auf daß das name=Bild in deinem Formular
nicht in Anführungszeichen steht
name="Bild"

_m3 17.05.2002 03:54

Das Bild musst Du extra behandeln, dass wird nicht in einer Variablen abgelegt, von wo Du es einfach in die DB spielen kannst.

http://at.php.net/manual/de/features.file-upload.php
Genau durchlesen!!!

MUCH 17.05.2002 09:47

Das Bild soll direkt in die Datenbank...
 
der zitierte Artikel http://at.php.net/manual/de/features.file-upload.php hilft mir nicht sehr -
ich möchte das Bild ja NICHT als Datei, sondern direkt in meine Datenbank bei der Tabelle "adressen" ins Feld "Bild" vom Typ "BLOB" schreiben.

Wer könnte mir dabei bitte helfen???

danke!

_m3 17.05.2002 10:53

Ich sagte ja - GENAU lesen!

Das Bild wird Dir von PHP nicht automatisch in eine Variable gestellt, die Du dann einfach in die DB schreiben kannst, sondern du musst das Kopieren der Datei in die DB selber ausprogrammieren!
D.h. Datei oeffnen, in eine Variable einlesen, und dann diese Variable in ein Feld der DB inserten.
Jetzt klarer?

Code:

$filecontent = fread(fopen("/usr/local/myfile.jpg", "r"),
filesize("usr/local/myfile.jpg"));
 $filecontent = addslashes($filecontent);
 $res = mysql_db_query("testdb", "
          INSERT
            INTO testtable
          VALUES
            (
            '$filecontent'
            )") or die("Konnte Datei nicht in Datenbank speichern!");


MUCH 17.05.2002 11:17

danke!!!

Ein Problem besteht noch wenn ich Dein beschriebenes fopen("/usr/local/myfile.jpg", "r"), mache:

WO in meiner Umgebung liegt dieses Bild, nachdem ich es in der FORM eingegeben habe?

Muss ich da im INI des Apache bzw. PHP oder MySQL was verändern, bzw. überhaupt erst was definieren, um das von Dir zitierte "/usr/local/myfile.jpg" irgendwo zu sehen?

wenn ich mir meine Daten aus der Bank aufliste, hatte ich nämlich schon einmal beim Herumprobieren mit meiner Eingabemaske einen Text-Eintrag ins Feld "Bild" hineinbekommen.

einmal "H:WINDOWSphp1A.tmp" (ohne "\" )

und ein weiteres Mal:
"G:\Bilder\Julia.jpg" (weiss aber nicht mehr, wie ich zu diesem eher aussagekräftigem Dateinamen kam???)


momentan sehe ich den Wald vor lauter Bäumen nicht mehr ;)

_m3 17.05.2002 11:22

Oida voda!

Meinen Link hast Du nicht gelesen, oder? :(
Der Dateiname im Script war ja nur fuer Demo-Zwecke, den richtigen "temporaeren Namen bekommst Du ueber
Zitat:

$HTTP_POST_FILES['userfile']['tmp_name']
Der temporäre Dateiname, unter dem die hochgeladene Datei auf dem Server gespeichert wurde.

Wenn register_globals in der php.ini aktiviert ist, stehen unter der Annahme, dass der Name des Dateiuploads wie in dem obigen Beispielskript 'userfile' ist, zur Verfügung:
$userfile - Der temporäre Name, unter dem die hochgeladene Datei auf dem Server gespeichert wurde.

kikakater 18.05.2002 16:30

Felder mit dem Datentyp BLOB können mit LOAD_FILE(filename) gefüllt werden (der Datentyp BLOB erlaubt maximal 64 KB Dateninhalt)

_m3 19.05.2002 15:27

TINYBLOB, TINYTEXT L+1 bytes, where L < 2^8
BLOB, TEXT L+2 bytes, where L < 2^16
MEDIUMBLOB, MEDIUMTEXT L+3 bytes, where L < 2^24
LONGBLOB, LONGTEXT L+4 bytes, where L < 2^32

Ein Beispiel zu load_file gibts hier: http://gd.tuwien.ac.at/db/mysql/doc/...functions.html

kikakater 19.05.2002 15:55

Ein Verweis auf die Bilddatei mittels VARCHAR Textfeld 'Dateiname' - z.B. - funzt wesentlich besser. Weniger Segmentierung, weniger Daten in der Datenbank bla bla bla ...

Ein einfaches echo "<img src=\"$Dateiname\">"; im php Teil eines *.php / *.phtml Skripts sollte die Datei vom Dateisystem aus laden. Sollte der 'Pfad zur Datei' ein absoluter sein, muß man den HTML Code um "file:" erweitern.

echo "<img src=\"file:$Dateiname\">";


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag