Dateipfad mit PHP einlesen
Wie kann ich denn auch den Dateipfad einer Datei speichern, wenn ich sie per post mit PHP übertrage?
HI!
Ich würde gerne in eine DB lokale Dateipfade eintragen.
kann ich dann mit
leider nur den Dateinamen auslesen.
hätte aber gerne den ganzen Pfad. ob relativ oder absolut wäre einmal egal.
Gibt es hier eine Möglichkeit?
lg Dirm
HI!
Ich würde gerne in eine DB lokale Dateipfade eintragen.
<form action="test.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="ID" value=$row->part_id>
<input name="Datei" type="file" size="10"><br>
<input type="submit" value="OK">
</form>
kann ich dann mit
$datei = $_FILES["Datei"]["name"] ;
leider nur den Dateinamen auslesen.
hätte aber gerne den ganzen Pfad. ob relativ oder absolut wäre einmal egal.
Gibt es hier eine Möglichkeit?
lg Dirm
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 90068
Url: https://administrator.de/forum/dateipfad-mit-php-einlesen-90068.html
Ausgedruckt am: 10.04.2025 um 16:04 Uhr
8 Kommentare
Neuester Kommentar
hey Dirmhirn,
des kommt drauf an wo dein php script die Files hin lädt. Schon hast du den Pfad ich erklär das mal kurz an nem Beispiel:
Das PHP Script zum Uploaden:
Wichtig ist folgende Zeile:
Hier wird der relative/absolute Pfad angegeben. Binde ihn einfach in den SQL-Befehl ein und fertig.
mfg Maxi
des kommt drauf an wo dein php script die Files hin lädt. Schon hast du den Pfad ich erklär das mal kurz an nem Beispiel:
Das PHP Script zum Uploaden:
<?php
// Prüfen des Array $_FILES
if (isset($_FILES["datei"])) {
// Upload-Status
if ($_FILES["datei"]["error"] == UPLOAD_ERR_OK) {
// Muster zur Überprüfung der im Dateinamen
// enthaltenen Zeichen
$regExp = "/^[a-z_]([a-z0-9_-]*\.?[a-z0-9_-])*\.[a-z]{3,4}$/i";
// Dateiname und Dateigrösse
if (preg_match($regExp,$_FILES["datei"]["name"]) && $_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 10000000) {
// Temporäre Datei in das Zielverzeichnis
// des Servers verschieben.
move_uploaded_file($_FILES["datei"]["tmp_name"],"images/".$_FILES["datei"]["name"]);
//ErfolgsMeldung ausgeben
//echo "Dateiupload erfolgreich abgeschlossen";
header("Location: alle_grafiken.php");
}else {
echo "Fehler: Im Dateinamen oder Dateigrössen Limit!";
}
}else {
echo "Fehler: Während der Übertragung aufgetreten!";
}
}else {
echo "Fehler: Dateiupload fehlgeschlagen!";
}
?>
Wichtig ist folgende Zeile:
move_uploaded_file($_FILES["datei"]["tmp_name"],"images/".$_FILES["datei"]["name"]);
Hier wird der relative/absolute Pfad angegeben. Binde ihn einfach in den SQL-Befehl ein und fertig.
mfg Maxi
Hm... wen sie schon auf dem Serve sind, kannst du sie doch sicher auch auslesen !? ..klar, sonst wüsstest du ja nicht welche Bilder eingetragen werden können 
Naja, oder du verpackst es eben in einem <select>:
Schönen Gruß Arano
<?php
$img_dir="/struktur/teile/images";
$images =dir($img_dir);
$x =0;
while($img=$images->read()){
echo '<input id="i_'.$x++.'" type="checkbox" name="img_to_save_in_db" value="'.$img_dir.'/'.$img.'">
<label for="i_'.$x.'">'.$img.'</label>';
}
?>
<?php
echo '<select name="image_to_save_in_db">';
while(){
echo '<option value="'.$img_dir.'/'.$img.'">'.$img.'</option>';
}
echo '</select>';
?>
Schönen Gruß Arano
Jo, alles in einer liste kann lang werden ! Aber das heißt ja nicht das man es auch nur so machen kann 
Übersicht kannst du ja schaffen, indem du es in z.B. drei Schritten machst.
__1. Das Hauptselect__
Ein <select> das alle Projekte auflistet.
__1.1 Der erste Teil__
Auslesen der Ordner aus "daten", der Ordner "Spezial_projekte" wird __ausgelassen__
__1.2 Speizial_projekte__
Eine <optiongrp> die alle Spezialprojekte enthält.
Nun einen "weiter"-Button oder das "onchange" im <select>
__2. Die Unterordner des Projekts__
Ein weiteres <select> das die Unterordner des Projektes enthält. (hier kann man vielleicht ja die ganze Ordnerstruktur abbilden)
Und wieder einen "weiter"-Button oder das "onchange" im <select>
__3. Die Bilder des Projektes / gewählten Ordners__
Das dritte <select> mit allen Bilden des ausgewählten Projektes/Ordners.
Nun der "Speichern"-Button worauf der Hauptpfad des Projektes (select 1), die Unterordner (select 2) und der Name des Bildes (select 3) an den Server geschickt wird.
Der wird es nun in die DB eingetragen und evtl. an einen neuen Ort kopiert.
Die "onchange" habe ich deshalb erwähnt weil man mit ihnen die Inhalte des gewählten Projektes bzw. Unterordner schnell per AJAX in das nachfolgende <select> schreiben kann. (dann muss man nicht immer auf den "weiter"-Button klicken)
Es neu an den Server schicken kann doch nur funktionieren, wenn du direkt am Server sitzen würdest !
Schließlich kannst du mit dem <input file> ja nur Dateien des lokalen Systems auslesen, die dann (nur die Datei) an den Server geschickt wird.
Schönen Gruß Tobias
Übersicht kannst du ja schaffen, indem du es in z.B. drei Schritten machst.
__1. Das Hauptselect__
Ein <select> das alle Projekte auflistet.
__1.1 Der erste Teil__
Auslesen der Ordner aus "daten", der Ordner "Spezial_projekte" wird __ausgelassen__
__1.2 Speizial_projekte__
Eine <optiongrp> die alle Spezialprojekte enthält.
Nun einen "weiter"-Button oder das "onchange" im <select>
__2. Die Unterordner des Projekts__
Ein weiteres <select> das die Unterordner des Projektes enthält. (hier kann man vielleicht ja die ganze Ordnerstruktur abbilden)
Und wieder einen "weiter"-Button oder das "onchange" im <select>
__3. Die Bilder des Projektes / gewählten Ordners__
Das dritte <select> mit allen Bilden des ausgewählten Projektes/Ordners.
Nun der "Speichern"-Button worauf der Hauptpfad des Projektes (select 1), die Unterordner (select 2) und der Name des Bildes (select 3) an den Server geschickt wird.
Der wird es nun in die DB eingetragen und evtl. an einen neuen Ort kopiert.
Die "onchange" habe ich deshalb erwähnt weil man mit ihnen die Inhalte des gewählten Projektes bzw. Unterordner schnell per AJAX in das nachfolgende <select> schreiben kann. (dann muss man nicht immer auf den "weiter"-Button klicken)
Es neu an den Server schicken kann doch nur funktionieren, wenn du direkt am Server sitzen würdest !
Schließlich kannst du mit dem <input file> ja nur Dateien des lokalen Systems auslesen, die dann (nur die Datei) an den Server geschickt wird.
Schönen Gruß Tobias