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

Форум PHP

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

 

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

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

тема: Загрузка файла на сервер
 
 автор: dimon   (01.08.2007 в 11:16)   письмо автору
 
 

Я тут на сайте нашел скрипт загрузки файлов на сервер:

<?php
   
if($_FILES["filename"]["size"] > 1024*3*1024)
   {
     echo (
"Размер файла превышает три мегабайта");
     exit;
   }
   if(
copy($_FILES["filename"]["tmp_name"],
     
"c:/temp/".$_FILES["filename"]["name"]))
   {
     echo(
"Файл успешно загружен <br>");
     echo(
"Характеристики файла: <br>");
     echo(
"Имя файла: ");
     echo(
$_FILES["filename"]["name"]);
     echo(
"<br>Размер файла: ");
     echo(
$_FILES["filename"]["size"]);
     echo(
"<br>Каталог для загрузки: ");
     echo(
$_FILES["filename"]["tmp_name"]);
     echo(
"<br>Тип файла: ");
     echo(
$_FILES["filename"]["type"]);
   } else {
      echo(
"Ошибка загрузки файла");
   }
?>

он вот тут находится: http://www.softtime.ru/scripts/upload.php

Вначале я так понял, что если я выбираю файл на своем жестком диске через форму type="file", то upload.php перебрасывает файл на сервер, на котором сам и находится. Но видимо я еще зеленее в РНР, чем я думал, потому что как не пытаюсь разобраться, что именно этот скрипт делает, так и не получается. Пока, вроде как понял, что содержимое файла перебрасывается в tmp директорию сервера по умолчанию, присваивая файлу уникальное временное имя. Автор скрипта еще написал, что содержимое файла доступно через HTTP_POST_FILES.
А если мне эта папка temp не доступна (да и бывает ли она вообще доступна на хостинге??), то как мне загрузить файл на сервер фтп? подскажите, плиз.

   
 
 автор: cheops   (01.08.2007 в 12:49)   письмо автору
 
   для: dimon   (01.08.2007 в 11:16)
 

Папка temp, как правило, открыта для всех - иначе ничего работать не будет - слишком многим службам на хостинге необходимо создавать временные файлы. Если включён защищённый режим, то вместо функции copy() следует воспользоваться функцией move_uploaded_file().

PS Длинными массивами $HTTP_POST_FILES - лучше не пользоваться, они сейчас по умолчанию отключаются и всё идёт к тому, чтобы они были исключены из PHP.

   
 
 автор: dimon   (01.08.2007 в 13:33)   письмо автору
 
   для: cheops   (01.08.2007 в 12:49)
 

У меня просто уровень доверия за 4 месяца хорошей работы в компании еще не поднялся до нужного, поэтому сис.админ еще не очень горит желанием открыть мне доступ ко всему содержимому нашего сервера (даже папке tmp, где содержится статистика)
После выполнения пишется это:

Файл успешно загружен
Характеристики файла:
Имя файла: 12.txt
Размер файла: 12
Каталог для загрузки: /tmp/phplJIiXd
Тип файла: text/plain


я заменил copy на move_uploaded_file но показывается ошибка.

кстати, вот сообщение, выдаваемое при выполнении оригинального скрипта:

Warning: copy(c:/temp/12.txt): failed to open stream: No such file or directory in {...}File/scripts/upload.php on line 15
Ошибка загрузки файла


там правильные слэши? не надо заменять "/" на экранированные "\"? это же не http и не ftp? а верхнее сообщение о том, что все ок, это потому что я сразу заменил c:/temp/ на свой "Y:\Личные документы и каталоги\\" (сетевая папака), но там ничего нового не появляется... странно все как-то...

   
 
 автор: cheops   (01.08.2007 в 13:37)   письмо автору
 
   для: dimon   (01.08.2007 в 13:33)
 

Погодите - вы выполняете скрипт на сервере или локальной машине? Если на сервере, то вместо C:/temp подставляйте путь куда вы хотите в конечном итоге переместить файл (на сервере).

   
 
 автор: dimon   (01.08.2007 в 14:31)   письмо автору
 
   для: cheops   (01.08.2007 в 13:37)
 

согласен, тут накладочка вышла с C:/temp.. но я вроде пробовал и указывая путь на удаленном сервере, все равно не получалось...
Сам себе отвечаю: указал полный путь и все стало ОК. Спасибо, что направили на верный путь :)

   
Rambler's Top100
вверх

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