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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: FTP. Закачка В и ИЗ, без манагера

Сообщения:  [1-10]   [11-12] 

 
 автор: Anwor   (13.07.2006 в 13:07)   письмо автору
 
   для: 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'? Как вообще с помощью заголовка организовать подключение к ФТП-серверу?

Буду очень признателен, если ответите..

   
 
 автор: Anwor   (12.07.2006 в 17:04)   письмо автору
 
   для: Trianon   (12.07.2006 в 15:25)
 

т.е. сначала высылается форма и всё, что в ней, а потом уже запускается скрипт, верно?

Нет ли какого-либо способа обойти этот момент и вывести сообщение "Подождите..." раньше, чем начнет грузиться файл? Может, ЯваСкриптом можно?

   
 
 автор: Trianon   (12.07.2006 в 15:25)   письмо автору
 
   для: Anwor   (12.07.2006 в 11:14)
 

Скрипту передается управление лишь тогда, когда файл уже попал на сервер.

   
 
 автор: Anwor   (12.07.2006 в 15:23)   письмо автору
 
   для: 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) {?>
/////////////дальше код исторической ценности не имеет.

   
 
 автор: Anwor   (12.07.2006 в 10:03)   письмо автору
 
   для: 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?

   
 
 автор: cheops   (10.07.2006 в 11:16)   письмо автору
 
   для: Anwor   (09.07.2006 в 23:02)
 

А вполне может быть (это зависит от того, какая маска на сервере umask) - сразу после создания директории попробуйте изменить её права при помощи функции ftp_chmod().

   
 
 автор: Anwor   (09.07.2006 в 23:02)   письмо автору
 
   для: cheops   (09.07.2006 в 13:47)
 

Нет конечно. А не может быть гвоздь в том, что при выкладке на ФТП-шник мы здесь не указываем права доступа к нему, а-ля 0707 или 0754? Он из-за этого косячить не может?

   
 
 автор: cheops   (09.07.2006 в 13:47)   письмо автору
 
   для: Anwor   (09.07.2006 в 13:13)
 

Имена директории и файла английские (т.е. нет там русских символов)?

   
 
 автор: Anwor   (09.07.2006 в 13:13)   письмо автору
 
   для: cheops   (09.07.2006 в 10:46)
 

Да, именно она.
Т.е. самая "какость" ФТП-функций как раз-таки в том, что здесь не выведешь в мессагу что-то конкретное об ошибке, как это есть у Мускул-функций (mysql_error()). Вот и приходится гадать, флажки выводить и пр., тем не менее всё равно не фурычит (((
Так вроде всё правильно написал... может кто-нибудь разобраться, в чем тут косяк?

   

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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