[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не загружается из формы один файл на сервер
Tasia
Имеется более менее стандартная форма для передачи нескольких текстовых полей и поле для загрузки файла. Все работает, данные записываются, файлы загружаются, на странице перехода с формы обрабатыватся.
Но вот нашелся один! (по меньшей мере, из ста файлов) файл, после отправки формы и, видимо, загрузки в темпори, какая-то ошибка. Переход на страницу обработки данных осуществляется, но все данные, полученные с формы (в том числе текстовые), пустые.
Что это может быть, что с файлом может быть не так, и как посмотреть ошибки?
Файл pdf, маленький, все права назначены, как и у других, "нормальных". Переименование (на всякий случай) не помогло.



Спустя 4 дня, 1 час, 18 минут (30.08.2011 - 16:05) Tasia написал(а):
Файл оказался большим - 11 Мб, все файлы в байтах, а этот в Кбайтах, не сразу заметила.
При проверке оказалось, что файлы больше 8 Мб не грузятся, сообщений об ошибках нет, все значения, полученный с полей формы - пустые. В php.ini установлено 20 Мб.
Где же все-таки может запрет стоять?

Спустя 5 минут, 19 секунд (30.08.2011 - 16:11) killer8080 написал(а):
В php.ini
post_max_size и upload_max_filesize

Спустя 18 часов, 49 минут, 4 секунды (31.08.2011 - 11:00) Tasia написал(а):
Спасибо, все получилось smile.gif .
Остался все-таки вопрос, как вывести все сообщения об ошибках, Когда не был установлен достаточно большим параметр upload_max_filesize. при загрузке файла выдавалось сообщене об ошибке, а недостаточно большой параметр post_max_size не вызывал никаких сообщений.
На странице обработки формы у меня стоит код:
ini_set('display_errors'.'on');
ini_set('error_reporting',E_ALL);
$_FILES['uploadfile']['error'];

Спустя 18 минут, 6 секунд (31.08.2011 - 11:18) l@pteff написал(а):
Как вариант, делать на странице скрытое поле, содержащее максимально допустимый размер файла в байтах, проверяющее размер файла еще до момента отправки его на сервер

<form enctype="multipart/form-data" action="/upload.php" method="post">
<input
type="hidden" name="MAX_FILE_SIZE" value="30000">

Спустя 7 минут, 5 секунд (31.08.2011 - 11:25) Tasia написал(а):
А проверку-то где производить - на форме ?
Я вроде так понимаю, что проверка должна быть до нажатия кнопки submit

Спустя 7 минут, 12 секунд (31.08.2011 - 11:32) l@pteff написал(а):
По нажатию на сабмит проверяешь соответствует ли размер файла требуемому, если соответствует-загрузка на сервер, нет-вывод ошибки

Спустя 24 минуты, 5 секунд (31.08.2011 - 11:56) Tasia написал(а):
Нет, я чего-то не понимаю, боюсь, самого главного sad.gif .
По сабмит я оказываюсь на странице обработки формы, и, если ошибка, то все полученные параметры пустые. Если имя файла пустое, где-ж размер его взять?

Спустя 23 минуты, 49 секунд (31.08.2011 - 12:20) l@pteff написал(а):

<input type="hidden" id="max_size" name="max_file_size" value="30000">


Получаем значение скрытого инпута

var max_size=$('#max_size').val();


Далее переменную max_size отправляем на обработчик
А в обработчике делаем примерно следующее:

$max_size = intval($_POST['max_size']);
if ($max_size<$_FILES['filename']['size']) {
exit ("Размер файла больше допустимого");
}
/*
Дальнейшие действия с файлом
*/


Tasia, исключительно навскидку, не проверял, возможно придется допилить

Спустя 15 минут, 49 секунд (31.08.2011 - 12:36) linker написал(а):
<input type="hidden" id="max_size" name="max_file_size" value="30000">
элементарно подделывается. Если файла нет, то его нет, а значит была ошибка и проверять его размер не имеет смысла.

Спустя 53 минуты, 4 секунды (31.08.2011 - 13:29) Tasia написал(а):
Так вот и я о том - нет у меня файла, есть ошибка.
Как вывести сообщения об ошибках? . Не печатаются у меня ошибки, я код выше привела sad.gif , может, чего другое в коде надо?

Спустя 23 минуты, 9 секунд (31.08.2011 - 13:52) linker написал(а):
Я не вижу твоего кода, где есть проверка на ошибки и печать соответствующих варнингов.

Спустя 20 минут, 3 секунды (31.08.2011 - 14:12) Tasia написал(а):
Код проверки :

<?php
ini_set('display_errors','on');
ini_set('error_reporting',E_ALL);
print_r($_POST);
?>

Спустя 13 минут, 59 секунд (31.08.2011 - 14:26) linker написал(а):
И что здесь проверяется? В $_FILES['uploadfile']['error'] содержится код ошибки, что значит тот или иной код читаем в мануале PHP http://www.php.ru/manual/features.file-upload.errors.html а тут частые проблемы http://www.php.ru/manual/features.file-upl...n-pitfalls.html
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.