2014-10-22 3 views
-1

В приведенном ниже коде я пытаюсь загрузить изображение, но он показывает следующую ошибку.Ошибка при загрузке изображения в PHP

Предупреждение: move_uploaded_file(): Не удается переместить 'D: \ Work \ XAMPP \ TMP \ php8A66.tmp' до 'изображений \ загрузки \ слайдера \' 1413996794 _ :: 1.jpeg '' в D: \ Работа \ xampp \ htdocs \ project \ aad \ slider.php в строке 35

Я думаю, проблема в функции с именем move_uploaded_file(); php.

Справочник, где следует сохранить это изображение в папке проекта.

Я пытаюсь решить эту проблему. Какой шаг я должен предпринять?

if(isset($_POST['upload'])){ 
    $imageName = $_POST['imageName']; 
    $imageFile = $_FILES['imageFile']['tmp_name']; 
    $imageSize = $_FILES['imageFile']['size']; 
    $imageType = $_FILES['imageFile']['type']; 

    $ipAddress = $_SERVER['REMOTE_ADDR']; 
    $time = time(); 

    if($imageType == 'image/gif'){ 
     $ext = '.gif'; 
    }elseif($imageType == 'image/png'){ 
     $ext = '.png'; 
    }elseif($imageType == 'image/jpg'){ 
     $ext = '.jpg'; 
    }elseif($imageType == 'image/jpeg'){ 
     $ext = '.jpeg'; 
    } 

    $imageFileName = $time.'_'.$ipAddress.$ext; 

    //$dir = "images\uploads\slider\$imageFileName"; 
    $dir = "images\uploads\slider\".$imageFileName; 

    if($imageName !== ''){ 
     if($imageSize < '200000000'){ 
      if($imageType == 'image/gif' || $imageType == 'image/png' || $imageType == 'image/jpeg' || $imageType == 'image/jpg'){ 
       if(move_uploaded_file($imageFile, $dir)){ 
        $query = "INSERT INTO slider VALUES('', '$imageName', '$imageFileName', '$imageSize', '$dir')"; 
        $mysql_query = mysql_query($query); 
        if($mysql_query){ 
         $msg = 'Image Uploaded Successfully'; 
        }else{ 
         $msg = 'Image Uploading Failed.'; 
        } 
       }else{ 
        $msg = 'Error while uploading file, Please try again.'; 
       } 
      }else{ 
       $msg = 'Image type should be .gif, .png, .jpg or .jpeg.'; 
      } 
     }else{ 
      $msg = 'Image size is too large.'; 
     } 
    }else{ 
     $msg = 'Image name cannot be empty.'; 
    } 

} 
+0

Вы проверили журналы? Каково фактическое сообщение об ошибке? Я предполагаю, что это проблема с разрешениями в каталоге назначения. –

+0

Эти двоеточия ':' имеют какое-то отношение к вашему переименованию файла, используя 'time()' и IP-адрес. Добавьте отчет об ошибках в начало файла (ов) сразу после открытия тега < 'error_reporting (E_ALL); ini_set ('display_errors', 1); '. –

+0

@ Fred-ii- После добавления кода сообщения об ошибках в начало он по-прежнему показывает ту же ошибку. И yes time() используется для именования файла. И я не вижу двоеточий: в моем коде. – King

ответ

0

Прочитать ваше сообщение.

Вы пытаетесь сохранить файл в этом месте

images\uploads\slider\'1413996794_::1.jpeg 

существует ли D:\Work\xampp\htdocs\project\aad\images\uploads\slider\ в текущем рабочем дереве?

Кроме того, у вас есть ' и 2 : в вашем имени файла, которые являются недопустимыми в имени файла.

EDIT

Во-первых, вы должны удалить : «S с адреса внутрибрюшинно, чтобы они не увлекайтесь в имени файла.

Во-вторых, мне кажется, что у вас возникла проблема с ', потому что у вас не удалось сбежать с \.

Попробуйте это:

// Remove any instance of ':' 
$imageFileName = str_replace(":", "", $imageFileName); 

// Set the directory, escaping backslashes 
$dir = "images\\uploads\\slider\\" . $imageFileName; 
+0

Сэр, Почему вы добавили двойные слэши в $ dir \\? – King

+0

Обратная косая черта используется для экранирования символов внутри кавычек. Т.е.: '$ something =" i am text \ "с кавычками \ внутри кавычек."; 'В приведенном выше коде символ" \ "является escape-символом с текстом или в вашем случае' '' next Добавляя дополнительные обратные косые черты, вы выходите и добавляете в строку литерал '\'. –

+0

[См. Документацию по PHP-стрингам] (http://php.net/manual/en/language.types.string.php) –

Смежные вопросы