• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

bilder mit formular in mysql db laden?

T

totomoto

Guest
hi zusammen

ich hab da ein problem ich möchte gern bilder mittels einem formular / php in eine mysql db laden. nur wie geht das?

mit <input type='file' name='bild'> sende ich es nur wie bearbeite ich das jetzt mit php?
und wie heisst der der feldtyp in mysql wenn ich nur .jgp, .gif und png bildformate zulassen möchte?
und schlussendlich wie wird dann ein bild auf den server kopiert in welches verzeichnis??

kann mir jemand helfen?

besten dank.
toto

ps. im prinzip ist es doch das was hier beim attach file verwendet wird!?
 
du solltest prinzipiell deine bilder nicht in einer DB speichern, denk nur mal dran, wie´s mit nem update bei den bildern dann aussieht. auch "veredelt" es die bilder nicht, wenn sie aus einer db kommen.
denk nochmal drüber nach.
bye,
mo
 
aber wie macht man das denn?

hi mo!

aber wie macht man das denn? ist dann so, dass ich in die db nur den datei namen und den pfad eintrage??

aber irgendwie muss doch das file trotzdem auf den server in images verzeichnis oder so?

Also soll ich den datei namen in die db eintragen und und dann sagen geh und zieh das images aus
/images ?

aber wie kann ich dann zulassen das man ein bild überhaupt dahin speichern kann?

besten dank.
toto
 
is nich schwer. du machst einen file-upload mit einem formular (input type=file name=datei).
dann steht dir die variable datei_name mit dem namen des files zur verfügung. das musst du dann halt entsprechend in deinen images-ordner kopieren und in der db trägst du, wie du schon richtig vermutet hast, nur den namen der datei ein.
bye,
mo
 
Hm, man könnte die Bilder selbst einfach in ein Verzeichniss auf dem Webserver laden. Vielleicht ein kleines Beispiel:

Code:
<HTML>
<HEAD>
<TITLE>Bilder-Upload</TITLE>
</HEAD>
<BODY>
<h1>Bilder-Upload</h1>

<form action="img_accept.php4" method="post" enctype="multipart/form-data">
<pre>
Name der Bilddatei (real) <input type="text" name="dFilename">

<input type="file" name="fImg">
<input type="hidden" name="MAX_FILE_SIZE" value="10000">
</pre>
</form>
<hr noshade><i>Upload-Skript</i>

</BODY>
</HTML>

So, das wäre immerhin einmal die HTML-Datei hierzu. dFilename ist der Name der Datei, wie sie schlussendlich im Verzeichniss auftauchen soll (allerdings inklusive der Dateierweiterung angeben!), und fImg ist die eigentliche Datei. MAX_FILE_SIZE ist eine Größe in Byte, ab der der Browser den Upload verhindert. Nun der Code der img_accept.php4:

Code:
<?
$dPath="/pfad/zu/img/verzeichniss/absolut/"; // Dies ist das Verzeichniss zu den Bildern, ABSOLUT angegeben

if(!isset($dFilename)) { echo "Fehler: Kein Dateiname angegeben!"; exit; }
$imgType=array("jpg","png","gif");  // Array mit allen zugelassenen Dateieendungen

if($fImg=="none") {  // Wenn Datei nicht hochgeladen ...
 echo "Datei konnte nicht empfangen werden!";
 exit;  // ... Ausführung abbrechen.
}

$err=0;
for($i=0;$i<count($imgType);$i++) {
 if(substr($fImg_name,strlen($fImg_name)-2,3)!=$imgType[$i]) { $err++; }
}

if($err==count($imgType)) { echo "Datei entspricht keinem angeforderten Typus!"; exit; }

if(file_exists($dPath.$dFilename)) {
 unlink($dPath.$dFilename);  // Altes File wird gelöscht
}

// Jetzt wird das File in den Image-Ordner kopiert
if(rename($fImg,$dPath.$dFilename)==1) {
 echo "File erfolgreich kopiert!";
 Header("img_register.php4?filename=$dFilename&path=$dPath");
} else {
 echo "Fehler: File konnte nicht erfolgreich kopiert werden!";
}
?>

Tscha, wahrscheinlich voll mit Fehlern - aber was soll's. So ungefähr sollte es funktionieren! Nach einem erfolgreichen Upload steht nun im jeweiligen Ziel-Ordner eine neue Datei zur Verfügung, entsprechend dem Namen, der angegeben war. Nun wird allerdings noch per Header-Redirect eine neue File aufgerufen namens 'img_register.php4', die das Bild in eine Text-Datei einträgt:

Code:
<?
 if(!isset($dPath) || !isset($dFilename))
 { echo "Kein Dateiname oder Pfad gegeben!"; exit; }

 $f=fopen("list.dat","r");
 $ts=time();
 fputs($f,"$dPath$dFilename;$ts\n");
 fclose($f);
 echo "Bild erfolgreich registriert!";
?>

In diesem Skript wird die Datei inklusive Timstamp geloggt (man könnte auch sonstetwas loggen!), und somit wär's das. Eigentlich kein großer Aufwand ...!
 
Zurück
Oben