Intereting Posts
Разбор SOAP-ответа с PHP по-разному php SimpleXML проверяет, существует ли ребенок как я могу опубликовать значение текстового поля, которое динамически создается jquery Использовать пространство имен php внутри функции Laravel 4 доступ к переменным среды Laravel 4 Auth – используйте md5 вместо интегрированного Hash :: make () Предпочитаете ли вы использовать $ _SERVER на веб-сайте? Распределение памяти PHP не работает file_get_Contents не отправит строки запроса в url, поэтому ничего не получает с помощью $ _GET PHPUnit: Как я обманываю эту файловую систему? Ошибка PHP, MySQL: количество столбцов не соответствует количеству значений в строке 1 Как показать изображение, защищенное http-аутентификацией Установка apache 2.4 и php 5.5 на ubuntu 12.04 mysql_connect (): соединение не может быть выполнено, потому что целевая машина активно отказалась от него Я не получаю цены с API рекламы продукта Amazon

Форма загрузки PHP – невозможно загрузить файл изображения 200kb

У меня есть форма для загрузки 2 файлов. Они могут загрузить один или просто загрузить оба одновременно. Когда я загружаю 2 небольших файла изображения (оба под 100kb), они работают отлично. Но если один файл больше, скажем, около 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>"; } 

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

Вы должны проверить файл 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 КБ. Если вы хотите загрузить файл большего размера, вы должны увеличить это значение.

Тег скрытого поля формы – это предложение браузеру, что это максимально допустимый размер, но он не изменит настройки на стороне сервера. Прежде чем выполнять какую-либо обработку ваших файлов, вам нужно проверить, удалось ли загрузить:

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

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

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

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