Hallo,
bin eigentlich schon länger hier auf der Seite unterwegs, weil es immer wieder nützliche Tipps hier gibt. Aber nun bin ich irgendwie wohl auf dem falschen Weg und hab mich mal fürs Forum registriert. :)
Ich bräuchte Hilfe, um auf meinem Linuxserver (Apache2-Server) einen Datei-Upload einzubinden, überwiegend für Bilder.
Ich habe im Rootverzeichnis des Apacheservers (www/html) einen Ordner "uploads" angelegt. In diesen Ordner habe ich einmal eine "index.html" und eine "upload.php"-Datei angelegt und einen "upload"-Ordner, in dem die Hochgeladenen Dateien gespeichert werden sollen.
In meiner index.html Datei habe ich folgendes Script:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Upload</title>
</head>
<body>
<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit" name="submit">UPLOAD</button>
</form>
</body>
</html>
In meiner upload.php habe ich folgendes Script:
<?php
if (isset($_POST['submit'])) {
$file = $_FILES['file'];
$fileName = $_FILES['file']['name'];
$fileTmpName = $_FILES['file']['tmp_name'];
$fileSize = $_FILES['file']['size'];
$fileError = $_FILES['file']['error'];
$fileType = $_FILES['file']['type'];
$fileExt = explode('.', $fileName);
$fileActualExt = strtolower(end($fileExt));
$allowed = array('jpg', 'jpeg', 'png', 'pdf');
if (in_array($fileActualExt, $allowed)) {
if ($fileError === 0) {
if ($fileSize < 1000000) {
$fileNameNew = uniqid('', true).".".$fileActualExt;
$fileDestination = 'uploads/'.$fileNameNew;
move_uploaded_file($fileTmpName, $fileDestination);
header("Location: index.php?uploadsuccess");
} else {
echo "Your file is too big!";
}
} else {
echo "There was an error uploading your file!";
}
} else {
echo "You cannot upload files of this type!";
}
}
Mir ist bewusst, dass noch zwei "else" fehlen, hatte ich gestern Abend noch angepasst, aber leider kein Zugriff im Moment drauf, aber dies sollte nicht zu meinem Problem führen.
Wenn ich nun z.B. eine test.jpg Datei hochlade, zeigt mir der Browser (Chrome) zwar an, dass er die Datei hochläd, jedoch befindet sich nichts im vom mir angegebenen "upload"-Ordner. Auch unter var/tmp befindet sich diese Datei nicht. Auch mit find / test.jpg finde ich die Datei nicht.
Hier auf selfhtml Datei-Upload steht dazu folgendes:
Beachten Sie: Beim Absenden des Formulars wird zwar die gewählte Datei auf den Server übertragen, jedoch nur in einem temporären Verzeichnis gespeichert. Beim Aufruf einer weiteren URL durch den Browser wird sie wieder verworfen. Es bedarf serverseitig eines Scriptes (PHP, Perl, JSP …), um die Datei nach dem Upload dauerhaft in ein Verzeichnis auf dem Server abzulegen.
Mir ist bewusst, dass ich nach erfolgreichem Hochladen auf die Seite "index.php?uploadsuccess" verweise und somit eine neue URL aufrufe, aber auch, wenn ich diese Zeile weg lasse, finde ich die "test.jpg" Datei nicht.
Entweder habe ich einen echt dummen Denkfehler, oder irgendwas stimmt mit meinem Script nicht. Wie kann ich meine Testdatei auf dem Server finden?
War jetzt doch recht viele geschrieben, aber ich hoffe ihr könnt mir weiterhelfen. Danke schonmals!
Manuel