2016-04-23 19 views
0

Ich habe Probleme beim Verschieben der hochgeladenen Dateien (Bild in diesem Fall) in den angegebenen Ordner. Wenn der Benutzer die Daten gesendet hat, wird der Pfad mit dem Dateinamen des Bildes in die Datenbank eingefügt, aber das ausgewählte Bild wird nicht in den angegebenen Ordner verschoben. Ich bin neu, als ich Tutorials im Web folgte. Aber jetzt wird nur die Datei nicht in den angegebenen Ordner verschoben.move_uploaded_file() verschiebt hochgeladene Dateien nicht

Hier ist das HTML-Formular:

<form action="" enctype="multipart/form-data" method="post"> 
    <input id="imageSelect" name="profile" type= 
    "file"> 
    <input class="submitButton" id="uploadimg" name="uploadimg" type= 
    "submit" value="Upload"> 
</form> 

PHP Form:

if (isset($_FILES['profile']) === true) { 
      if (empty($_FILES['profile']['name']) === true) { 
       ?><script type='text/javascript'>alert('Please select an image before submitting!');</script><? 
      } else { 
       $allowed = array('jpg', 'jpeg', 'gif', 'png'); 

       $file_name = $_FILES['profile']['name']; 
       $file_extn = strtolower(end(explode('.', $file_name))); 
       $file_temp = $_FILES['profile']['tmp_name']; 

       if (in_array($file_extn, $allowed) === true) { 
        change_profile_image($session_id, $file_temp, $file_extn); 


        header('Location: profileimgchange.php'); 
        exit(); 
       } else { 
        ?><script type='text/javascript'>alert('Incorrect file type! Only jpeg, jpg, gif and png are allowed');</script><? 
       } 
      } 
     } 

change_profile_image Funktion:

function change_profile_image($user_id, $file_temp, $file_extn) { 
$file_path = 'Image/ServerData/Images/ProfilePicture/' . substr(md5(time()), 0, 10) . '.' . $file_extn; 

move_uploaded_file($file_temp, $file_path); 
mysql_query("UPDATE `users` SET `profileimg` = '" . mysql_real_escape_string($file_path) . "' WHERE `user_id` = " . (int)$user_id); 
} 

Die Script-Funktion (wenn das hilft) befindet:

Core > System > Users.php 

Der Bildordner befindet sich außerhalb des Core-Ordner, die

Image > ServerData > Images > ProfilePicture 

ich diese Informationen hoffen ist, ist genug. Danke

+0

haben Sie überprüft die Berechtigungen :) arbeiten? – Pooya

+0

Ja, ich habe den Ordnerpfad mit 'chmod -Rf 777' geändert, aber es hat nicht funktioniert –

+0

Versuchen Sie mit'/'hier' $ file_path = '/ Image/ServerData/Images/ProfilePicture /' "; repariere einfach den '$ file_path', es scheint falsch zu sein. – C2486

Antwort

0

$file_path wird relativ zu dem Verzeichnis interpretiert, das das Skript enthält, also versucht es, die Datei in Core/System/Image/ServerData/Images/ProfilePicture/ zu setzen. Sie müssen 2 Ebenen nach oben gehen, um zu root zu gelangen.

$file_path = '../../Image/ServerData/Images/ProfilePicture/' . substr(md5(time()), 0, 10) . '.' . $file_extn; 

Wenn das nicht stimmt, verwenden Sie einen absoluten Pfad.

+0

Ich habe das schon mal probiert, funktioniert aber immer noch nicht. :/ –

+2

Dann versuchen Sie stattdessen, einen absoluten Pfad zu verwenden. – Barmar

+0

Ja, es ist Arbeit! So seltsam, warum die Verwendung des absoluten Pfades funktioniert, wenn klar ist, dass bereits alles überprüft wurde, selbst wenn der relative Pfad verwendet wird? –

0

Dieser eine

if(isset($_POST['uploadimg'])){ 
$target_dir = "assets/uploads/"; 
$target_file = $target_dir . basename($_FILES["profile"]["name"]); 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 

$check = getimagesize($_FILES["profile"]["tmp_name"]); 
if($check !== false) { 
    echo "File is an image - " . $check["mime"] . "."; 
    $uploadOk = 1; 
} else { 
    echo "File is not an image."; 
    $uploadOk = 0; 
} 
// Check if file already exists 
if (file_exists($target_file)) { 
    echo "Sorry, file already exists."; 
    $uploadOk = 0; 
} 
// Check file size 
if ($_FILES["profile"]["size"] > 500000) { 
    echo "Sorry, your file is too large."; 
    $uploadOk = 0; 
} 
// Allow certain file formats 
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" 
&& $imageFileType != "gif") { 
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
    $uploadOk = 0; 
} 
// Check if $uploadOk is set to 0 by an error 
if ($uploadOk == 0) { 
    echo "Sorry, your file was not uploaded."; 
// if everything is ok, try to upload file 
} else { 
    if (move_uploaded_file($_FILES["profile"]["tmp_name"], $target_file)) { 
     echo "The file ". basename($_FILES["profile"]["name"]). " has been uploaded."; 
    } else { 
     echo "Sorry, there was an error uploading your file."; 
    } 
} 
} 

HTML

<form action="" enctype="multipart/form-data" method="post"> 
    <input id="imageSelect" name="profile" type="file"> 
    <input class="submitButton" id="uploadimg" name="uploadimg" type="submit" value="Upload"> 
</form> 
+0

Vielen Dank für Ihre Antwort. Ich habe es repariert! : D –

+0

Könnten Sie das als gelöst markieren? :) – krunos

Verwandte Themen