Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Загрузка файла с сервера клиенту


Автор: Xena 17.2.2005, 16:36
Друзья!
Помогите разобраться с такой задачей

Есть список url файлов лежащих на сервере (например *.zip), доступных только через https!

Хочу написать локальный скрипт который бы позволил не сидеть и нажимать на все эти ссылки, а получив их список скачивал бы ко мне на диск.
Нужна функция получающая на вход два параметра: url и путь на локальном диске, которая бы копировала файлы с сервера клиенту по указанному пути.
Сам разобраться не смог, пытался использовать
Код

 var fso, f1;
 fso = new ActiveXObject("Scripting.FileSystemObject");
 f1 = fso.GetFile("c:\\test.txt");

и т.п., но не помогло.

Жду ваших советов, заранеее спасибо.

P.S. FTP-качалки не предлагайте, в моём случае файлы перекачиваются по HTTPS и только из IE

Автор: Aliance 4.3.2005, 20:47
А с помощью php никак?! 8)

Автор: Xena 4.3.2005, 23:21
Дорогой, Aliance !
Буду очень признателен, если подскажешь КАК!!!
Я уже начал погружаться в эту тему, вот живое доказательство http://forum.vingrad.ru/index.php?showtopic=42724&st=0&unread=#entry341111 здесь!
Но и там, как видишь, никто подсказать по делу ничего не может!
Жду бесконечно помощи!
И спасибо за отзывы!

Автор: Aliance 4.3.2005, 23:55
Код

<HTML>
<HEAD>
<title>PHP Uploader</title>
</HEAD>
<BODY>
<form action="upload.php">
<INPUT name="userfile[]" type="file">
<INPUT name="userfile[]" type="file">
<INPUT name="userfile[]" type="file">
<INPUT type="submit" value="Загрузить">
</form>
</BODY>
</HTML>


upload.php:
Код

<?php
for ($i = 0; $i < sizeof($userfile); $i++) {
   if (!$userfile_size[$i])
     continue;
   $UPLOAD = fopen( $userfile[$i], "r");
   $contents = fread( $UPLOAD,$userfile_size[$i] );
   fclose( $UPLOAD );
   $SAVEFILE = fopen( "upload/".$userfile_name[$i], "wb" );
   fwrite( $SAVEFILE, $contents, $userfile_size[$i] );
   fclose( $SAVEFILE );
}
echo "Файлы загружены";
?>

Добавлено @ 23:57

Цитата(Xena @ 4.3.2005, 23:21)
Жду бесконечно помощи!

Sorry, что сразу не отвечал - видимо пропустил твой топик, потом пролистывал топы без ответа - нашел smile
Будет что непонятно - спрашивай :-) smile

Автор: Xena 27.3.2005, 15:54
Дорогой, Aliance !
Насколько я понимаю твой пример предлагает закачивать файлы на сервер, а мне нужно наооборот скачивать их с сервера к себе на диск.
Вот этот пример:
Код

<?
  // открыли соединение
  $so = fsockopen("php.spb.ru", 80, &$errno, &$errstr, 30);
  // послали GET форму (простой URL + указание вирт. хоста)
  fputs($so,"GET /files/notepad.exe HTTP/1.0\nHOST: php.spb.ru\n\n");
  // читаем все, пока не наступит "конец заголовка" (т.е. начало документа)
  // если наступит, то со след. байта начнется документ
  while(fgets($so,2048)!="\r\n" && !feof($so));
  unset($buf);
  // читаем документ в переменную
  while(!feof($so)) $buf.=fread($so,2048);
// Готово. В переменной $buf храниться скаченный документ (т.е. файл)
  // Максимум можно читать порциями по 64K-1байт
  // закрываем сокет
  fclose($so);
  echo "Download fine, size ".strlen($buf)." bytes."; flush();
  // используем скаченный файл (в переменной) по назначению...
  $f=fopen("download.tmp","wb+");
  fwrite($f,$buf,strlen($buf));
  fclose($f);
?>

позволяет делать именно то, что мне нужно, но через протокол HTTP, а как быть если всё тоже самое нужно проделать через HTTPS?
Спасибо за поддержку.

Автор: IZ@TOP 27.3.2005, 18:36
Xena, а ты не пробовал просто с помощью
Код

$f = implode('', file($url));
? или я задачу опять перепутал немного?

Хотя нет. Через HTTPS не будет работать...

Автор: Xena 29.3.2005, 01:05
Слава богу!!!! smile

Дорогой IZ@TOP!
Благодаря твоей косвеной помощи (поиск в мануале implode вывёл меня окольными путями на нужную дорожку), я наконец-то нашёл ответ!
Все темы можно закрывать!

Задача решается так:

Всё дело в cURL!
Либо прикрутить его к PHP, либо использовать из командной строки.
в мануале всё подробно расписано, дистрибутивы здесь: http://curl.haxx.se/
Всем спасибо!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)