2015-01-22 3 views
1

Я запускаю свой тестовый проект php на локальном компьютере с помощью XAMPP. У меня есть форма, где пользователь может просматривать изображение со своего компьютера и загружать в мою базу данных.move_uploaded_file() не работает

Я использую функцию move_uploaded_file() для перемещения изображения в нужную папку. Скрипт работает без ошибок, но изображение не было перемещено в нужную папку. Он не выводит сообщение об ошибке, если move_uploaded_file() не удалось. Вот мой код:

функции
$upload_dir= 'uploads'; 
for($i=0; $i < count($_FILES['file']['tmp_name']);$i++){ 
    if(!empty($_FILES['file']['name'][$i])){ 
     $temp = explode(".", $_FILES["file"]["name"][$i]); 
     $extension = end($temp); 
     $allowedExts = array("gif", "jpeg", "jpg", "png"); 

     if(!in_array($extension, $allowedExts)){ 
      echo "Only image ending with .jpg, .jpeg, .gif, .png is allowed"; 
     } 
     // copy the file to the specified dir 
     else{ 
      $name[$i] = sha1(microtime()) . "." . $extension; 
      if(move_uploaded_file($_FILES['file']['tmp_name'][$i],$upload_dir.'/'.$name[$i])){ 
       $image_path_array[$i]=$upload_dir.'/'.$name[$i]; 
      } 
      else{ 
       /*** an error message ***/ 
       echo "error with move_uploaded_file"; 
      } 

     } 
     } 
    } 
+2

Где $ upload_dir ?? –

+0

жаль, что я объявил $ upload_dir, но я забыл включить его в это. Изменил его –

+0

У вас была такая проблема. Решил его с помощью 'copy()' и 'unset()' ... Это обходной путь. – Daniel

ответ

-2

Вы должны иметь отдельные move_uploaded_files() для изображения на сервере и изображения на компьютере клиента.

  1. Изображение с клиентской машины будут загружены в вашу временную папку сервера
  2. изображения на интернет-сервере будет выбрано в качестве URL для этого изображения
0

Ни один из ваших эхо заявления, скорее всего, к работе сюда. Это должно быть

echo "error with move_uploaded_file"; 

No "=" sign.

Кроме того, вы уверены, что ваш веб-сервер имеет разрешение на запись в каталог загрузки?

0

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

1) Я думаю, что вы должны дать полный путь к каталогу вашего $ upload_dir переменного что-то вроде этого:

$upload_dir=$_SERVER['DOCUMENT_ROOT']."/uploads"; 

2) Да эхо, что вы дали для отображения "error with move_uploaded_file" необходимо исправить, что бы поправить это иначе, это даст синтаксическую ошибку:

//an error message 
echo "error with move_uploaded_file"; 

Я надеюсь, что это исправить вашу проблему :)

+0

Я не думаю, что есть ошибка с моим $ upload_dir, потому что, когда я сначала отправляю форму, work_uploaded_file() работал. Но когда я редактирую эту форму для загрузки большего изображения или замены старого изображения на новый, каким-то образом он не перемещает изображение в папку для загрузки? –

+0

да, это может также работать, но я не уверен в этом, так как это может создать некоторую проблему на сервере, поэтому было бы полезно указать полный путь вместо относительного –

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