|
|
|
|
|
для: Anwor
(12.07.2006 в 17:04)
| | Прочитал в справочнике функций про ftp_nb_get(), там выложен код скрипта (т.е. их 3):
<?php
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA)
{
echo ".";
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED)
{
echo "There was an error downloading the file...";
exit(1);
}
?>
|
В каждом из трех скриптов в качестве local_file и remote_file принимаются соответственно "test" и "README". В принципе, если этот скрипт выложить, то работает он нормально, если, конечно, есть файл "README". Вопрос возникает тогда, когда скопированный файл "test" объявляется в той же директории!
1. Как бы так организовать работу скрипта, чтобы пользователь сам мог выбирать путь и имя файла на своем клиентском компе?
2. Собственно, животрепещуще: как реализовать саму скачку?? Подставлял вместо "test" и "c:\file.txt", и "c:/file.txt", и что только не, но - по барабану: как только путь ведет на локальную машину, тут же нагло выводим ошибку и затыкаемся. В чем может заключаться проблема?
3. Может, есть вообще какой-то альтернативный метод скачки файла, с помощью заголовков or somethin'? Как вообще с помощью заголовка организовать подключение к ФТП-серверу?
Буду очень признателен, если ответите.. | |
|
|
|
|
|
|
|
для: Trianon
(12.07.2006 в 15:25)
| | т.е. сначала высылается форма и всё, что в ней, а потом уже запускается скрипт, верно?
Нет ли какого-либо способа обойти этот момент и вывести сообщение "Подождите..." раньше, чем начнет грузиться файл? Может, ЯваСкриптом можно? | |
|
|
|
|
|
|
|
для: Anwor
(12.07.2006 в 11:14)
| | Скрипту передается управление лишь тогда, когда файл уже попал на сервер. | |
|
|
|
|
|
|
|
для: Anwor
(12.07.2006 в 11:14)
| | Люди, помогите плиз! | |
|
|
|
|
|
|
|
для: Anwor
(12.07.2006 в 10:03)
| | Пардон, вопросы отпали сами собой.
Теперь хочу спросить о небольшой хитрости.. В общем скрипт мой заработал, но дело в том, что когда в поле file помещается крупный файл, скажем, 3 Мб, то РНР, вместо того чтобы первым делом вывести "ПОДОЖДИТЕ..." и картинку с песочными часами, сначала долго-долго подгружает его в сессионный темп. Когда ему остается уже на сервере только скопировать здоровый файл из 1 места в другое, то он обновляет страницу, и тут же говорит, что файл загружен. Проще говоря: надо, чтобы он сначала сказал о том, что началась загрузка, а уже потом начал саму загрузку, сейчас у меня страница висит по 5 минут и ничего не помогает.
Код сейчас такой:
<?php
if (isset($_POST['upload'])) {
$error="";
if (empty($_FILES['file_path']['name'])) {
$error.="<LI>Не выбран путь к файлу на жестком диске \n";
}
if (empty($_POST['file_name'])) $error.="<LI>Не указано имя документа \n";
if (empty($_POST['file_folder'])) $error.="<LI>Не выбрано дело \n";
if (empty($_POST['file_note'])) $error.="<LI>Нет описания документа \n";
if (!empty($error)) {
print "<font color='red'>Ошибка запроса!</font><font color='red'><br>
$error</font>";
} else {
//тут идет огромный блок MySQL-запросов........
echo "<b>Подождите, идет загрузка...<br>";
echo '<p align="center"><object width="50" height="70">
<param name="movie" value="img/clock.swf">
<param name="quality" value="high">
<embed src="img/clock.swf" quality="high" type="application/x-shockwave-flash" width="100" height="100"></embed>
</object></p>';
$path_parts=pathinfo($_FILES['file_path']['name']);
$ext=$path_parts["extension"];
$remote_name=$_POST['file_name']."_$file_id.$ext";
$file_remote="/documents/".$_POST['file_folder']."/".$remote_name;
require("ftp.php");
$ret = ftp_nb_put($link, $file_remote, $_FILES['file_path']['tmp_name'], FTP_BINARY);
while ($ret == FTP_MOREDATA) {
$ret = ftp_nb_continue($link);
}
if ($ret != FTP_FINISHED) {
echo "<br><font color='red'><b>Во время загрузки файла произошла ошибка...</b></font>";
exit();
} else {
$copy_result=1;
}
if ($copy_result) {?>
/////////////дальше код исторической ценности не имеет.
|
| |
|
|
|
|
|
|
|
для: cheops
(10.07.2006 в 11:16)
| | Подскажите, плз, 2 вещи..
1) Есть хост HOST.RU и есть на нем мой субдомен USER.HOST.RU. При коннекте к ФТП я пишу ftp_server="HOST.RU", в то время как папка USER.HOST.RU является корневой для моего сайта. Вот и вопрос: при указании пути для размещения файла - нужно ли указывать эту самую папку? Пример: я указываю /documents/folder/file, а не надо ли так: user.host.ru/documents/folder/file?
2) Каково время жизни у данных в массиве $_FILES? | |
|
|
|
|
|
|
|
для: Anwor
(09.07.2006 в 23:02)
| | А вполне может быть (это зависит от того, какая маска на сервере umask) - сразу после создания директории попробуйте изменить её права при помощи функции ftp_chmod(). | |
|
|
|
|
|
|
|
для: cheops
(09.07.2006 в 13:47)
| | Нет конечно. А не может быть гвоздь в том, что при выкладке на ФТП-шник мы здесь не указываем права доступа к нему, а-ля 0707 или 0754? Он из-за этого косячить не может? | |
|
|
|
|
|
|
|
для: Anwor
(09.07.2006 в 13:13)
| | Имена директории и файла английские (т.е. нет там русских символов)? | |
|
|
|
|
|
|
|
для: cheops
(09.07.2006 в 10:46)
| | Да, именно она.
Т.е. самая "какость" ФТП-функций как раз-таки в том, что здесь не выведешь в мессагу что-то конкретное об ошибке, как это есть у Мускул-функций (mysql_error()). Вот и приходится гадать, флажки выводить и пр., тем не менее всё равно не фурычит (((
Так вроде всё правильно написал... может кто-нибудь разобраться, в чем тут косяк? | |
|
|
|
|