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!


Hatte es dann auf 2100000 geändert, was den 2MB dann ja schon eher entspricht. Mit ajax habe ich bereits für ein weiteres kleines Projekt zuhause gearbeitet: hatte mit einem Arduino, RF und IR Sender/Empfänger, Temperatursensoren, Lüfter, Funksteckdosen... unter anderem eine Steuerung für meine TV/HiFi Endgeräte sowie Ambilight gebaut. Alles sollte auf die herkömmliche Art per Fernbedienung gesteuert werden können, aber eben auch über eine Weboberfläche vom Smartphone. Hatte dann also mit html5, ajax, java, php, mysql... eine nette responsive Oberfläche zusammengebastelt in der sich bei geöffneter Webseite die Schalterstellungen der zu steuernden Endgeräte ändern, sobald ein Befehl über die IR-Fernbedienung abgesetzt wurde. Daher ajax.. Auf das Projekt bin ich immernoch sehr stolz, da es täglich im Einsatz ist und bereits über 1 Jahr ohne irgendwelchen Probleme läuft! Mit der Hardware für die Umsetzung des Projektes kenne ich mich aus, hatte auch die eine oder andere Platine dafür selbst entwickelt/hergestellt (sitze quasi an der Quelle). Das ganze Webdesign hingegen war für mich völlig Neuland und musste ich mir komplett selbst beibringen..