Upgeloadete Bilder in einen anderen Ordner verschieben.

Hookah

Erfahrenes Mitglied
Bild Upload Funktioniert nicht

Ich weiss das ist bestimmt der 1.000.001 Thread zum Thema Files Uploaden.

Ich hab mal so gut wie keine Ahnung von PHP . Suchfunktion spuckte mir eine Million Threads aus. Leider hab ich da nie den durchblickt gehabt. Ich hab mich an das Tutorial für Uploaden mit PHP gehalten (Klick)
aber da wird nicht gesagt wie ich das in einem anderen Verzeichnis speichern kann. Wenn ich es so benutze speichert das Hochgeladene Bild da wo auch upload.php ist.
Das möcht ich nicht. Es sollte in einem Ordner mit den Namen bild_uploads .

Der Name der Datei wird ja beibehalten und beim Upload einer gleichnamigen Datei wird die alte überschrieben. Geht das wenn ich zum Bespiel zweimal hallo.gif hochlade, das hinter dem Dateiname noch was wie a001 steht und dann wenn es das schon gibt da a002 steht?
Ich bin der gerne lernende Hooki aber ich hab mich noch nicht mit PHP befasst. Aber so wie das aussieht kann man damit einige sachen machen. Wär nett wenn mir jemand helfen könnte. Ich les mich dann mal weiter ein.
mfG Hook
 
Zuletzt bearbeitet:
Und wie benutze ich die move_uploade_file() funktion?
Auf der Verlinkten Seite steht zwar was zu dieser funktion, aber ich verstehe es nicht. Die funktion hab ich schon mal gelesen beim suchen. Ich hab auch keinen Ansatz was jetzt in die () gehört. Also ich denk da muss der Ordner angegeben werden und um welche Datei es handelt. Ich bemüh mich schon das zu verstehen nur ist das gar nicht so leicht für jemanden der es nicht kann.

Also ich habs einfach mal probiert. Es steht auch das die Datei hochgeladen ist. Aber sehn tu ich sie nirgendwo. Hier mal was in meiner PHP steht.
PHP:
<?php
$uploaddir = "/bild_uploads/";
$tempname = $_FILES['file']['tmp_name']; 
$name = $_FILES['file']['name'];
$type = $_FILES['file']['type']; 
$size = $_FILES['file']['size'];  
if($type != "image/gif" && $type != "image/pjpeg") { 
    $err[] = "nur gif und jpeg Dateien dürfen hochgeladen 

werden."; 
} 
if($size > "15000") { 
    $err[] = "Die Datei welche du hochladen willst, ist zu 

gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
}  
if(empty($err)) { 
    move_uploaded_file("$_FILES", "$uploaddir"); 
    echo "Die Datei $name wurde erfolgreich hochgeladen!"; 
} 
else { 
    foreach($err as $error) 
    echo "$error<br>"; 
}  
?>
 
Zuletzt bearbeitet:
ICh krieg das nicht hin , mein Fehler sollte doch offensichtlich sein. Ich probiers und es kommt kein Fehler aber trotzdem funktioniert es nicht. So hab ich das jetz gemacht.
PHP:
<?php
$uploaddir = '/var/www/users/sammler/bild_uploads/';
$tempname = $_FILES['file']['tmp_name']; 
$name = $_FILES['file']['name'];
$type = $_FILES['file']['type']; 
$size = $_FILES['file']['size'];  
if($type != "image/gif" && $type != "image/pjpeg") { 
    $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden."; 
} 
if($size > "15000") { 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!

<br>Maximale Dateigrosse beträgt 15 KB!"; 
}  
if(empty($err)) { 
    move_uploaded_file($_FILES['tmp_name'], $uploaddir); 
    echo "Die Datei $name wurde erfolgreich hochgeladen!"; 
} 
else { 
    foreach($err as $error) 
    echo "$error<br>"; 
}  
?>
Kann mir bitte einer mal sagen wa daran jetzt falsch ist? Die Seiten hab ich mir auch angeguckt bin aber zu keiner Lösung gekommen.
 
PHP:
move_uploaded_file($_FILES['tmp_name'], $uploaddir);
Wenn ich das richtig sehe, hast du hier was vergessen...
Müsste so aussehen:
PHP:
move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir);
Probiers mal....
 
Wenn ich das so mache dann kommen folgende Fehler

Warning: move_uploaded_file(/var/www/users/sammler/bild_uploads/) [function.move-uploaded-file]: failed to open stream: Is a directory in /var/www/users/sammler/upload.php on line 14

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpz2nVIi' to '/var/www/users/sammler/bild_uploads/' in /var/www/users/sammler/upload.php on line 14

und in dem Ordner ist es auch nicht.
 
PHP:
move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir.$_FILES['file']['name']);
So habs grad mal ausprobiert und noch ein wenig verändert. So funktionierts bei mir.
Darfst du Datei überhaupt hochladen oder ist es deaktiviert?
 
Danke jetz gehts. Jetz müsste die Datei noch einen anderen Namen bekommen um das überschreiben zu verhindern. Geht das und wenn ja wie. Ein ansatz reicht damit ich es mal probieren kann.
 
Entschuldigung wegen des Doppelpostings.

Ich hab zwar nicht genau das gefunden was ich mir gedacht habe aber das ist auch egal.
Folgendes Problem. Wenn ich
$name=uniqid(""); benutze um den Dateinamen zu ändern sagt er mir dann zwar das die Datei xyz1234 Hochgalden wurde und in dem Link zum Bild ist auch der Name aber es ist die datei mit Originalnamen im Ordner

PHP:
<?php
$uploaddir = '/var/www/users/sammler/bild_uploads/';
$tempname = $_FILES['file']['tmp_name']; 
$name = $_FILES['file']['name'];
$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];  
if($type != "image/gif" && $type != "image/jpeg" && $type !=    

"image/png") { 
    $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden."; 
} 
if($size > "1500000") { 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!

<br>Maximale Dateigrosse beträgt 1500 KB!"; 
}  
$name=uniqid("");
switch($_FILES['file']['type'])
{
case 'image/jpeg':
$name.=".jpg";
break;
case 'image/gif':
$name.='.gif';
break;
case 'image/png':
$name.='.png';
break;
}

if(empty($err)) { 
    move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir.$_FILES

['file']['name']) ;
    echo "Die Datei $name wurde erfolgreich hochgeladen <br>";
echo("<a href='bild_uploads/" . $name . "'>Link zu datei: Datei</a>");
} 
else { 
    foreach($err as $error) 
    echo "$error<br>"; 
}  
?>
Was fehlt denn das der Name der Datei auch geändert wird?
 
Zuletzt bearbeitet:
Zurück