Форма загрузки PHP - невозможно загрузить файл изображения размером 200 КБ - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть форма для загрузки 2 файлов. Они могут загрузить один или просто загрузить оба одновременно. Когда я загружаю 2 небольших файла изображений (оба размером менее 100 КБ), они работают идеально. Но если один файл больше, скажем, около 200 КБ, он не будет работать. Я уже установил максимальное значение «100000» в скрытом теге ниже, поэтому я не уверен, что еще я могу сделать, чтобы это исправить?

<form enctype="multipart/form-data" action="upload.php" method="post">    
<b>Image File</b><br />
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />

<b>Large Image</b>: <input type="file" name="uploadedfile1" size="30" /><br />

<b>Thumb Image</b>: <input type="file" name="uploadedfile2" size="30" /><br />

<center><input type="submit" name="submit" value="submit" class="button"></center>

</form>

Когда он обработан, он переходит к этому php-коду:

$uploadedfileBase1 = basename($_FILES['uploadedfile1']['name']);
$uploadedfileTemp1 = $_FILES['uploadedfile1']['tmp_name']; 
$uploadedfileBase2 = basename($_FILES['uploadedfile2']['name']);
$uploadedfileTemp2 = $_FILES['uploadedfile2']['tmp_name']; 


// Large Image
$target_path_large = $target_path . "large/" . $uploadedfileBase1; 

if(move_uploaded_file($uploadedfileTemp1, $target_path_large)) {
echo "<p>The <b>large</b> file \"$uploadedfileBase1\" has been uploaded.</p>";
} else{
echo "<p>There was an error uploading the <b>large</b> file <i>$uploadedfileBase1</i>, please try again!</p>";
}

// Thumb Image
$target_path_thumb = $target_path . "thumbs/" . $uploadedfileBase2; 

if(move_uploaded_file($uploadedfileTemp2, $target_path_thumb)) {
echo "<p>The <b>thumbnail</b> file \"$uploadedfileBase2\" has been uploaded.</p>";
} else{
echo "<p>There was an error uploading the <b>thumbnail</b> file <i>$uploadedfileBase2</i>, please try again!</p>";
}

Спасибо за чтение!

Ответы [ 3 ]

4 голосов
/ 15 февраля 2011

Вам следует проверить файл php.ini на вашем сервере, особенно следующие параметры:

  1. post_max_size

  2. upload_max_filesize

  3. max_execution_time

  4. max_input_time

  5. memory_limit

В вашем случаепроблема может быть в слишком маленьких post_max_size & upload_max_filesize.

EDIT: Теперь я заметил, что вы сами определяете MAX_FILE_SIZE = 100000 байт <100 КБ в скрытом поле.Таким образом, ваш загружаемый файл не может превышать 100 КБ наверняка.Если вы хотите загрузить файл большего размера, вы должны увеличить это значение. </p>

1 голос
/ 15 февраля 2011

Проверьте значения, которые вы имеете для upload_max_filesize и post_max_size в вашем php.ini. Убедитесь, что они больше, чем файл, который вы загружаете.

1 голос
/ 15 февраля 2011

Скрытый тег поля формы указывает браузеру, что это максимально допустимый размер, но он не изменит настроек на стороне сервера. Перед выполнением какой-либо обработки ваших файлов вы ДОЛЖНЫ проверить, удалась ли загрузка:

if ($_FILES['uploadedfile1']['error'] !== UPLOAD_ERR_OK) {
    die("file #1 failed with error code " . $_FILES['uploadedfile1]['error']);
}

и так далее. Полный список констант ошибок для загрузки файлов доступен здесь .

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

...