Ошибка при попытке загрузить файл в PHP - PullRequest
2 голосов
/ 25 июня 2009

У меня php page все работало нормально до сегодняшнего утра. Теперь страница не загружает ни один выбранный файл. Все, что я продолжаю получать, это следующее сообщение об ошибке:

Предупреждение: move_uploaded_file (upload / BrainStream_2009_06_25_23041.zip) [function.move-uploaded-file]: не удалось открыть поток: в C: \ xampp \ htdocs \ vectorization \ admin \ jobs_edit.php нет такого файла или каталога 146

Предупреждение: move_uploaded_file () [function.move-uploaded-file]: невозможно переместить 'C: \ Documents and Settings \ Admin \ Local Settings \ Temp \ php1B2.tmp' в 'upload / BrainStream_2009_06_25_23041.zip' в C : \ xampp \ htdocs \ vectorization \ admin \ jobs_edit.php в строке 146 Файл не может быть загружен. Пожалуйста, выберите правильный файл. Имя файла: BrainStream.zip

Я написал следующий код:

$uplfile = $_FILES['uploadfile']['name'];   
$upltmp = $_FILES["uploadfile"]["tmp_name"];
if(!empty($uplfile))
{       
    $ext = explode(".", $uplfile);

    $upload_date = date("Y_m_d"); //use this variable to change file name to avoid conflict with same name files
    $upload_dir = "upload/";

    $file_name=$ext[0]."_".$upload_date."_".rand(0, getrandmax()).".".$ext[1];

    (move_uploaded_file($upltmp,$upload_dir.$file_name))
 }

На моем компьютере установлен стек XAMPP с WinXP, 3 ГБ ОЗУ и достаточно места на жестком диске.

Независимо от того, какой размер файла я выбираю, он всегда выдает ошибку.

Что должно быть не так в этом коде?

Ответы [ 6 ]

2 голосов
/ 25 июня 2009

Интересный синтаксис в последней строке. Ошибка указывает на то, что проблема в этой строке и отсутствует исходный файл или каталог назначения. Поскольку первый генерируется автоматически, убедитесь, что C:\xampp\htdocs\vectorization\admin\upload существует и доступен для записи.

1 голос
/ 25 июня 2009

@ phihag

Спасибо за подсказку. Один из новых разработчиков при изучении исходного кода по ошибке удалил (../) в присвоении переменной $ upload_dir.

$upload_dir = "upload/"; //this is wrong

На самом деле это было установлено как

$upload_dir = "../upload/"; //this works but accidentally edited by another developer 

Какой я ламер. Я не мог определить проблему.

В любом случае, спасибо один раз за помощь в решении моей проблемы.

0 голосов
/ 25 июня 2009

Вам может пригодиться быстрая проверка, чтобы убедиться, что файл был успешно загружен, например,

switch ($_FILES["cv"]["error"])
{
    case UPLOAD_ERR_FORM_SIZE:
       // handle error
    case UPLOAD_ERR_INI_SIZE:
       // handle error
    case UPLOAD_ERR_PARTIAL:
       // handle error
    case UPLOAD_ERR_NO_FILE:
       // handle error
    case UPLOAD_ERR_CANT_WRITE:
       // handle error
}

Это лучший способ обработки ошибок, с которыми вы можете столкнуться при загрузке файлов.

0 голосов
/ 25 июня 2009

Это может показаться очевидным, но обязательно перепроверьте свой php.ini

file_uploads = On
upload_tmp_dir = "C:\xampp\tmp"
upload_max_filesize = 64M
0 голосов
/ 25 июня 2009

Одна из двух вещей - либо

  1. Каталог для загрузки отсутствует
  2. Нет файла php1B2.tmp
0 голосов
/ 25 июня 2009

похоже, что ваша проблема может заключаться в том, что вы используете прямую косую черту для своего каталога загрузки, но в Windows это будет обратный слеш, вам также нужно убедиться, что каталог загрузки соответствует сценарию. если не указан полный путь.

Хороший совет для предотвращения проблемы с косыми чертами - использование константы DIRECTORY_SEPARATOR

...