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

Форум PHP

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

 

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

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

тема: Вопрос к господину Дизайнеру. ( И другим профи.)
 
 автор: Антон88   (24.01.2005 в 16:25)
 
 

Вопрос к господину Дизайнеру. ( И другим профи.)
Подскажите пожалуйста, как поступить?
Мне например нужно закачать на сайт около 1000 файлов. FTP не обслуживается. Вопрос такой - можно ли с помощью php сделать простейший менеджер. который закачает на сайт не файлы. а папку с файлами? К примеру - у меня есть страничка, на которой File Field. и кнопка для передачи. Так вот, позволяют ли возможности php написать для этой схемы такой скрипт? чтобы он закинул в эту же директорию. где и страничка, целую папку с компьютера?
Антон.

   
 
 автор: XPraptor   (24.01.2005 в 16:57)   письмо автору
 
   для: Антон88   (24.01.2005 в 16:25)
 

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

   
 
 автор: Антон88   (24.01.2005 в 17:43)
 
   для: XPraptor   (24.01.2005 в 16:57)
 

Тогда плиз, как закачать сразу, скажем 20 файлов? Я никогда не сталкивался с файловыми менеджерами.

   
 
 автор: Антон88   (24.01.2005 в 18:03)
 
   для: Антон88   (24.01.2005 в 17:43)
 

Точнее, вопрос поставлю вот так. Если нельзя закачать папку, то я поступить хитро - могу её заархивировать, и потом закачать. так вот вопрос - существует ли функция. которая этот архир разархивирует на сервере?
С уважением, антон.

   
 
 автор: cheops   (24.01.2005 в 23:36)   письмо автору
 
   для: Антон88   (24.01.2005 в 17:43)
 

Проще будет наверное создать форму с огромным числом полей для файлов:
<form enctype='multipart/form-data' name='form' action=handler.php method=post>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
Прикрепить: <input type=file name=attach[] size=61><br>
<input type=submit value=Отправить> 
</form> 

А в качестве обработчика handler.php назначить ей следующий скрипт
<?php 
 
// В цикле обрабатываем файлы
 
for($i 0$i<100$i++)
 {
   if(
$_FILES['attach']['error'][$i] == 0)
   {
     
// Копируем файл из временной директории
     // в директорию files
     
copy($_FILES['attach']['tmp_name'][$i],"files/".$_FILES['attach']['name'][$i]);
   }
 }
?>

Это скрипт перекидывает файлы из временной директории в поддиректорию files.

   
 
 автор: glsv (Дизайнер)   (24.01.2005 в 23:58)   письмо автору
 
   для: cheops   (24.01.2005 в 23:36)
 

Хм... на 1000 файлов это все равно не дело. Хотя и лучше чем по одному переписывать.

PS: А файлы у вас большие? Если большие, то есть опасность, что вы можете не успеть передать их на сервер. Будет превышен лимит времени.

   
 
 автор: Akira   (25.01.2005 в 00:05)   письмо автору
 
   для: glsv (Дизайнер)   (24.01.2005 в 23:58)
 

Я как то спрашивал как это сделать =Р но вопрос заглох (zlib) Лично у моего хостера есть эта библиотека.
Только FTP клиент у него неудобный.
Кто , что знает про zlib?

   
 
 автор: cheops   (25.01.2005 в 00:21)   письмо автору
 
   для: Akira   (25.01.2005 в 00:05)
 

Хм... нужно у себя на машине объединить файлы в одну строку утилитой tar - сжать gzip, тогда с таким файлом можно работать... но если дело происходит в Windows, а не в UNIX нужно достать соответствующие утилиты для Windows...

   
 
 автор: glsv (Дизайнер)   (24.01.2005 в 23:26)   письмо автору
 
   для: Антон88   (24.01.2005 в 16:25)
 

Если вам недоступен даже FTP, то скорее всего ничего не выйдет...
Может быть можно упаковывать файлы в архив, и затем заспаковывать прямо на сервере.. Но должны быть установлены библиотеки расширения. Например zlib. Хотя... я с ним не работал. Посмотрите в функции phpinfo() есть таблица с именем zlib.

   
 
 автор: XPraptor   (25.01.2005 в 10:27)   письмо автору
 
   для: Антон88   (24.01.2005 в 16:25)
 

Практически у всех хостеров стоит библиотека zlib, поэтому можно паковать. А чтобы не произошнл выход по таймауту, нужно в начале страницы с PHP скриптом послать заголовки:
set_time_limit(1000); //это значит что таймаут равен 1000 минут
ignore_user_abort(); //это значит не реагировать на нажатие кнопки стоп в браузере пользователя

   
 
 автор: isset   (26.01.2005 в 17:38)
 
   для: XPraptor   (25.01.2005 в 10:27)
 

set_time_limit(1000); //это значит что таймаут равен 1000 секунд.
А лучше установить 0

   
 
 автор: Akira   (26.01.2005 в 18:33)   письмо автору
 
   для: isset   (26.01.2005 в 17:38)
 

1) Нужно не паковать а распаковать.
2) Именно надо что бы zip и не что другое.
3) Есть такое я видел и работал лично.
4) Как это сделать?

   
 
 автор: Илья   (01.02.2005 в 06:31)
 
   для: Akira   (26.01.2005 в 18:33)
 

Акира прав.
Очень перспективно - этак можно закинуть на сервер целый сайт со всеми директориями, где уже лежат страницы, рисунки, и т.д... А если ftp не работает - это вообще дар божий...

   
Rambler's Top100
вверх

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