|
автор: Антон88 (24.01.2005 в 16:25) |
|
| Вопрос к господину Дизайнеру. ( И другим профи.)
Подскажите пожалуйста, как поступить?
Мне например нужно закачать на сайт около 1000 файлов. FTP не обслуживается. Вопрос такой - можно ли с помощью php сделать простейший менеджер. который закачает на сайт не файлы. а папку с файлами? К примеру - у меня есть страничка, на которой File Field. и кнопка для передачи. Так вот, позволяют ли возможности php написать для этой схемы такой скрипт? чтобы он закинул в эту же директорию. где и страничка, целую папку с компьютера?
Антон. | |
|
|
|
|
|
|
|
для: Антон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)
| | Точнее, вопрос поставлю вот так. Если нельзя закачать папку, то я поступить хитро - могу её заархивировать, и потом закачать. так вот вопрос - существует ли функция. которая этот архир разархивирует на сервере?
С уважением, антон. | |
|
|
|
|
|
|
|
для: Антон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. | |
|
|
|
|
|
|
|
для: cheops
(24.01.2005 в 23:36)
| | Хм... на 1000 файлов это все равно не дело. Хотя и лучше чем по одному переписывать.
PS: А файлы у вас большие? Если большие, то есть опасность, что вы можете не успеть передать их на сервер. Будет превышен лимит времени. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(24.01.2005 в 23:58)
| | Я как то спрашивал как это сделать =Р но вопрос заглох (zlib) Лично у моего хостера есть эта библиотека.
Только FTP клиент у него неудобный.
Кто , что знает про zlib? | |
|
|
|
|
|
|
|
для: Akira
(25.01.2005 в 00:05)
| | Хм... нужно у себя на машине объединить файлы в одну строку утилитой tar - сжать gzip, тогда с таким файлом можно работать... но если дело происходит в Windows, а не в UNIX нужно достать соответствующие утилиты для Windows... | |
|
|
|
|
|
|
|
для: Антон88
(24.01.2005 в 16:25)
| | Если вам недоступен даже FTP, то скорее всего ничего не выйдет...
Может быть можно упаковывать файлы в архив, и затем заспаковывать прямо на сервере.. Но должны быть установлены библиотеки расширения. Например zlib. Хотя... я с ним не работал. Посмотрите в функции phpinfo() есть таблица с именем zlib. | |
|
|
|
|
|
|
|
для: Антон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 | |
|
|
|
|
|
|
|
для: isset
(26.01.2005 в 17:38)
| | 1) Нужно не паковать а распаковать.
2) Именно надо что бы zip и не что другое.
3) Есть такое я видел и работал лично.
4) Как это сделать? | |
|
|
|
|
автор: Илья (01.02.2005 в 06:31) |
|
|
для: Akira
(26.01.2005 в 18:33)
| | Акира прав.
Очень перспективно - этак можно закинуть на сервер целый сайт со всеми директориями, где уже лежат страницы, рисунки, и т.д... А если ftp не работает - это вообще дар божий... | |
|
|
|