Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Портится файл при загрузке на сервер
 
 автор: antf   (11.11.2004 в 10:54)   письмо автору
 
 

Здравствуйте. Я столкнулся со следующей проблемой: пытаюсь загрузить файл на сервер (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:57)   письмо автору
 
   для: antf   (11.11.2004 в 10:54)
 

Извините, что получилось три темы, просто замечал ошибку в вопросе, когда нажимал кнопку отправить, затем нажимал назад. Оставьте, пожалуйста, сообщение с корректной подстветкой кода, а остальные удалите

   
 
 автор: elenaki   (11.11.2004 в 11:00)   письмо автору
 
   для: antf   (11.11.2004 в 10:57)
 

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

   
 
 автор: antf   (11.11.2004 в 11:43)   письмо автору
 
   для: elenaki   (11.11.2004 в 11:00)
 

Попробовал изменить атрибуты папки banners с rwxrwxr-x на rwxrwxrwx (там только картинки). Это не принесло никакого результата. Нет ли другого способа загрузить файл на сервер?
PS: корректную подсветку кода наладить не успел, так как в данной теме появился ответ

   
 
 автор: glsv (Дизайнер)   (11.11.2004 в 11:52)   письмо автору
 
   для: antf   (11.11.2004 в 10:54)
 

Возможно, на сервере установлен "Русский" Apache, который известен тем, что портит двоичные файлы при аплоуде из-за автоматической перекодировки.

Чтобы отменить перекодировку создайте файл .htaccess и пропишите в нем строку
CharsetRecodeMultipartForms off


Еще можно использовать директиву
CharsetDisable on

Эта директива отключает русскость Apache по максимуму.

По ссылке статья про файлы .htaccess

http://www.softtime.ru/info/articlephp.php?id_article=25

   
 
 автор: antf   (11.11.2004 в 13:37)   письмо автору
 
   для: glsv (Дизайнер)   (11.11.2004 в 11:52)
 

Сначала я попробовал снять комментарий с директивы CharsetRecodeMultipartForms off - в результате ничего не получилось, файлы продолжали загружаться некорректно. Потом я попробовал директиву CharsetDisable on, в итоге файлы перестали биться, и таким образом проблема перестала существовать. Большое спасибо, Дизайнер. А, кстати, зачем хостеры используют русский Apache если он работает некорректно?
PS На директиву CharsetRecodeMultipartForms off был наложен комментарий для того, чтобы можно было отлаживать сайт на локальной машине. Если этого не сделать, то Apache выдаст ошибку.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования