Hallo,
ich möchte zu Testzwecken einen kleinen Bilderupload via PHP einrichten. Hab dazu schon diverse Tutorials gelesen und auch soweit alles fertig, allerdings komme ich mit der letzten Funktion etwas ins stocken. Soweit sieht meine HTML aus:
und nun der PHP code:
Ich lande in der letzten If-Abfrage, auch in der richtigen Bedingung. Allerdings funktioniert das Verschieben der temporären Datei nicht so wie es soll.
Dazu habe ich folgenden gedanken:
Die webseite befindet sich auf der Diskstation im Verzeichniss: volume1/web/webseite/index.php
In dem Verzeichnis gibt es noch ein Unterverzeichnis "uploads". Soweit sollte alles passen.
Wenn ich mir die Variable $file_tmp als echo ausgeben lasse, erhalte ich folgendes Ergebnis: volume1/@tmp/abcdefg
abcdefg ist dann in dem Fall der Name der temporären Datei, welche verschoben werden soll.
Nun meine Frage: habe ich via php überhaupt Zugriff auf dem temporären Ordner? Ich habe via ssh mal in den Ordner geschaut und die datei abcdefg nirgends finden können, würde dann natürlich erklären warum sie auch nicht verschoben werden kann. Allerdings habe ich auch keine Ahnung ob ich so überhaupt dort rein schauen kann, da die Datei ja nur temporär gespeichert wird.
Dann habe ich ein weiteres Verständnis Problem:
Da sich meine index.php im Verzeichnis "webseite" befindet, sehe ich diesen Ordner als "Hauptordner" oder untersten Stammordner an. Wenn ich eine Datei nach "uploads" verschiebe, dann logischerweise nach "webseite/uploads". Die Datei, welche verschoben werden soll, befindet sich in "/volume1/@tmp". Wieso kann ich an dieser Stelle davon ausgehen, dass sich temporäre Datei nicht in "webseite/volume1/@temp" befindet sondern eigentlich noch in weiteren Ebenen unter dem Stammordner "webseite". Ist komisch geschrieben, ich hoffe es komm halbwegs verständlich rüber.
Den php - Code findet man auf einigen Webseiten, ist also nichts exotisches und scheint auch normalerweise zu funktionieren. Nur bei mir nicht und ich weis nicht ganz wieso. Vielleicht kann mal jemand kurz drüber schauen und hat eine Lösung parat?
Vielen Dank!
ich möchte zu Testzwecken einen kleinen Bilderupload via PHP einrichten. Hab dazu schon diverse Tutorials gelesen und auch soweit alles fertig, allerdings komme ich mit der letzten Funktion etwas ins stocken. Soweit sieht meine HTML aus:
HTML:
<form action="profil_picture_upload_script.php" method="post" enctype="multipart/form-data" >
<input type="file" name="upload_picture" />
<input type="submit" />
</form>
und nun der PHP code:
PHP:
<?php
session_start();
if(isset($_FILES["upload_picture"]))
{
$errors = array();
$file_name = $_FILES["upload_picture"]["name"];
$file_size = $_FILES["upload_picture"]["size"];
$file_tmp = $_FILES["upload_picture"]["tmp_name"];
$file_type = $_FILES["upload_picture"]["type"];
$file_ext = strtolower(end(explode('.',$_FILES["upload_picture"]["name"])));
$extensions = array("jpeg", "jpg", "png");
if(in_array($file_ext, $extensions) === false)
{
$errors[] = "Bitte verwende nur JPEG, JPG oder PNG-Dateien.";
}
if($file_size > 2000000)
{
$errors[] = "Die Datei darf nicht größer als 2MB sein.";
}
$einzigartiger_dateiname = rand(1000,9999) . "-" . $file_name;
if(empty($errors) == true)
{
move_uploaded_file($file_tmp,"uploads/".$einzigartiger_dateiname);
echo "Bild gespeichert";
}
else
{
print_r($errors);
}
}
?>
Ich lande in der letzten If-Abfrage, auch in der richtigen Bedingung. Allerdings funktioniert das Verschieben der temporären Datei nicht so wie es soll.
PHP:
move_uploaded_file($file_tmp,"uploads/".$einzigartiger_dateiname);
Dazu habe ich folgenden gedanken:
Die webseite befindet sich auf der Diskstation im Verzeichniss: volume1/web/webseite/index.php
In dem Verzeichnis gibt es noch ein Unterverzeichnis "uploads". Soweit sollte alles passen.
Wenn ich mir die Variable $file_tmp als echo ausgeben lasse, erhalte ich folgendes Ergebnis: volume1/@tmp/abcdefg
abcdefg ist dann in dem Fall der Name der temporären Datei, welche verschoben werden soll.
Nun meine Frage: habe ich via php überhaupt Zugriff auf dem temporären Ordner? Ich habe via ssh mal in den Ordner geschaut und die datei abcdefg nirgends finden können, würde dann natürlich erklären warum sie auch nicht verschoben werden kann. Allerdings habe ich auch keine Ahnung ob ich so überhaupt dort rein schauen kann, da die Datei ja nur temporär gespeichert wird.
Dann habe ich ein weiteres Verständnis Problem:
Da sich meine index.php im Verzeichnis "webseite" befindet, sehe ich diesen Ordner als "Hauptordner" oder untersten Stammordner an. Wenn ich eine Datei nach "uploads" verschiebe, dann logischerweise nach "webseite/uploads". Die Datei, welche verschoben werden soll, befindet sich in "/volume1/@tmp". Wieso kann ich an dieser Stelle davon ausgehen, dass sich temporäre Datei nicht in "webseite/volume1/@temp" befindet sondern eigentlich noch in weiteren Ebenen unter dem Stammordner "webseite". Ist komisch geschrieben, ich hoffe es komm halbwegs verständlich rüber.
Den php - Code findet man auf einigen Webseiten, ist also nichts exotisches und scheint auch normalerweise zu funktionieren. Nur bei mir nicht und ich weis nicht ganz wieso. Vielleicht kann mal jemand kurz drüber schauen und hat eine Lösung parat?
Vielen Dank!