Как скачать файл из интернета по ссылке?

Модератор: Модераторы

Как скачать файл из интернета по ссылке?

Сообщение alek111 » 19.05.2011 01:39:40

Подскажите как максимально просто скачать файл из интернета.
Аватара пользователя
alek111
новенький
 
Сообщения: 20
Зарегистрирован: 20.06.2006 16:17:50

Re: Как скачать файл из интернета по ссылке?

Сообщение Nik » 19.05.2011 11:27:27

Пример скачивания файла с помощью Synapse:

http://lazarus.su/other/skachivaem-fayl-po-ssyilke.html
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Как скачать файл из интернета по ссылке?

Сообщение Little_Roo » 18.04.2014 16:05:35

laxi писал(а):Сылка почему то не открывается

ИМХО, сайт умер :(
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 638
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Как скачать файл из интернета по ссылке?

Сообщение sign » 19.04.2014 06:40:16

Как раз на днях мне понадобилось сделать такое.
Немного порывшись тут и там, + метод научного тыка и родилось (посредством Indy):
Кидаем на форму - Http: TIdHTTP. Добавляем - TIdSSLIOHandlerSocketOpenSSL.
В свойстве IOHandler нашего Http, указываем - TIdSSLIOHandlerSocketOpenSSL.
Для куков кидаем - CM: TIdCookieManager и прописываем его в свойстве CookieManager нашего Http.
И для полного счастья кидаем на эту же форму - TIdAntiFreeze.
Установил
Код: Выделить всё
Http.AllowCookies    := True;
Http.CookieManager   := CM;
Http.HandleRedirects := True;

Добавил:
Код: Выделить всё
   
Data     := TStringList.Create;
Stream   := TMemoryStream.Create;
dump2    := TMemoryStream.Create;


Поскольку мне нужно входить на нужный мне сайт через логин - пароль, то посредством огненной лисы и его средства HTTPFox, вытащил всё нужное и по выдерганному написал:
Код: Выделить всё
   
Http.Request.Host           := '...;  // Подставляем реальный хост
Http.Request.UserAgent      := 'Mozilla/5.0 (Windows NT 5.1; rv:28.0) Gecko/20100101 Firefox/28.0';
Http.Request.Accept         := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
Http.Request.AcceptLanguage := 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3';
Http.Request.AcceptEncoding := 'gzip, deflate';
Http.Request.AcceptCharSet  := 'windows-1251,utf-8;q=0.7,*;q=0.7';
Http.Request.Referer        := 'http:...'; // Подставляем реальный адрес
Http.Request.Connection     := 'keep-alive';
Http.Request.ContentType    := 'application/x-www-form-urlencoded';


Затем включил в список Data всё нужное для авторизации на сайте
Код: Выделить всё
    Data.Add('тут логин');
    Data.Add('А вот тут пароль');
    Data.Add('1'); // А тут скрытые данные требуемые для регистрации
    Data.Add('1111');  // Ещё одни скрытые данные требуемые для регистрации


Подключаюсь
Код: Выделить всё
Http.Post('http://.../login_post.asp', Data, dump2);
dump2.Seek(0, soFromBeginning);
Data.LoadFromStream(dump2); // передаем данные дампа в стринглист для анализа
SSID := SessionID; // SSID: string; Написал функцию SessionID для вытаскивания из прочитанных данных номера сессии. Для формирования адреса файла с сайта - в адресе стоит номер сессии.


Затем с считанной страницы сайта ищу адрес нужного мне файла по его названию
Код: Выделить всё
   S := FindFileName('Бланк заказа продукции');


Ну и, собственно ответ на ваш вопрос - чтение самого файла
Код: Выделить всё
     S := Format('http://.../download5.asp?sessionid=%s&filename=%s', [SSID, S]);
     Stream.Clear;
     Http.Get(S, Stream);
     S := Format('D:\...\Заказы\%s Бланк заказа продукции.xls', [DateToStr(Now, '')]);
     Stream.SaveToFile(Utf8ToAnsi(S));


Вот, как-то так.
У меня всё работает.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Как скачать файл из интернета по ссылке?

Сообщение Vadim » 19.04.2014 07:14:12

sign
Вряд ли Ваш способ можно назвать простым. :D
Код: Выделить всё
program httpget;

{$mode objfpc}{$H+}

uses
  SysUtils, Classes, fphttpclient;

var
  w: TFPHTTPClient;

begin
  w:=TFPHTTPClient.Create(Nil);
  w.Get('http://www.freepascal.ru','./file.html');
  w.Free;
end.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Как скачать файл из интернета по ссылке?

Сообщение sign » 19.04.2014 08:25:45

А что там сложного?
Мне нужно залогиниться на сайте, программно.
Скачать открытую страницу.
Вытащить с этой страницы имя документа, поскольку оно (имя) формируется программно.
По данному имени закачать - не страницу из интернета, а документ - *.xls
Документ считывается в поток, поток записывается в файл на диске.

Т.е., если скачивать документ (не страничку) расположенный по заранее известному адресу, то всё очень просто.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Как скачать файл из интернета по ссылке?

Сообщение Little_Roo » 19.04.2014 11:06:17

Вот нашел в загашнике пример с (видимо уже умершего) lazarus.su
05_GetFile.rar
(11.23 КБ) Скачиваний: 1541
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 638
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Как скачать файл из интернета по ссылке?

Сообщение docent83 » 22.05.2017 23:44:31

У меня другой вопрос, как остановить загрузку большого файла?
Не нашел ничего похожего в TFPHttpClient. Что-то типа метода Interrupt или Close;
Есть protected метод DisconnectFromServer у родителя, но если его перекрыть и вызвать в потомке, то возникает ошибка.
docent83
незнакомец
 
Сообщения: 1
Зарегистрирован: 22.05.2017 23:36:50

Re: Как скачать файл из интернета по ссылке?

Сообщение Лекс Айрин » 25.05.2017 13:37:58

docent83, а код/текст ошибки?
Возможно, нет смысла его перекрывать, а стоит создать метод его юзающий.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград


Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru