|
|
|
| Здравствуйте. Я столкнулся со следующей проблемой: пытаюсь загрузить файл на сервер (UNIX-сервер) следующим образом:
Фрагмент кода модуля с формой
<td width="75%">
<input type='file' name='FileName2'></td>
<input type=hidden name="MAX_FILE_SIZE" value="1000">
</td>
|
Фрагмент кода обработчика формы:
if(!empty($HTTP_POST_FILES['FileName2']['tmp_name']))
{
//функция ErrorMessage()выводит сообщение об ошибке и прекращает работу скрипта
if($HTTP_POST_FILES['FileName2']['size']==0)
ErrorMessage('Размер загружаемого файла равен 0');
if($HTTP_POST_FILES['FileName2']['type'] != 'image/gif')
ErrorMessage('Неправильный формат загружаемого файла.<br>Баннер должно представлять из себя картинку в формате GIF');
if(!is_uploaded_file($HTTP_POST_FILES['FileName2']['tmp_name']))
ErrorMessage('Возможная атака хакеров');
if(!copy($HTTP_POST_FILES['FileName2']['tmp_name'], $DOCUMENT_ROOT.'/banners/banner'.$BannerId.'.gif'))
ErrorMessage('Не могу скопировать файл');
}
|
Результат: сообщения об ошибках не появляются, файл копируется по назначению, имеет такой же размер, принимает нужное имя, но в браузере не отображается. Если его загрузить обратно, то графические редакторы его открывать не захотят. На локальной машине(Win98) у меня все работает как надо. Я что-то не так делаю??? | |
|
|
|
|
|
|
|
для: antf
(11.11.2004 в 10:54)
| | Извините, что получилось три темы, просто замечал ошибку в вопросе, когда нажимал кнопку отправить, затем нажимал назад. Оставьте, пожалуйста, сообщение с корректной подстветкой кода, а остальные удалите | |
|
|
|
|
|
|
|
для: antf
(11.11.2004 в 10:57)
| | возможно, у вас та же проблема с хостером, что и у меня. он просто не разрешает грузить
файлы на сервер скриптом. скрипт выдает код ошибки 0, имена файлов, размеры, но сам
файл не показывает.
попробуйте изменить права доступа на папку, в которую вы копируете загруженный файл. | |
|
|
|
|
|
|
|
для: elenaki
(11.11.2004 в 11:00)
| | Попробовал изменить атрибуты папки banners с rwxrwxr-x на rwxrwxrwx (там только картинки). Это не принесло никакого результата. Нет ли другого способа загрузить файл на сервер?
PS: корректную подсветку кода наладить не успел, так как в данной теме появился ответ | |
|
|
|
|
|
|
|
для: antf
(11.11.2004 в 10:54)
| | Возможно, на сервере установлен "Русский" Apache, который известен тем, что портит двоичные файлы при аплоуде из-за автоматической перекодировки.
Чтобы отменить перекодировку создайте файл .htaccess и пропишите в нем строку
CharsetRecodeMultipartForms off
|
Еще можно использовать директиву
Эта директива отключает русскость Apache по максимуму.
По ссылке статья про файлы .htaccess
http://www.softtime.ru/info/articlephp.php?id_article=25 | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(11.11.2004 в 11:52)
| | Сначала я попробовал снять комментарий с директивы CharsetRecodeMultipartForms off - в результате ничего не получилось, файлы продолжали загружаться некорректно. Потом я попробовал директиву CharsetDisable on, в итоге файлы перестали биться, и таким образом проблема перестала существовать. Большое спасибо, Дизайнер. А, кстати, зачем хостеры используют русский Apache если он работает некорректно?
PS На директиву CharsetRecodeMultipartForms off был наложен комментарий для того, чтобы можно было отлаживать сайт на локальной машине. Если этого не сделать, то Apache выдаст ошибку. | |
|
|
|