Delphi-Help

  • Increase font size
  • Default font size
  • Decrease font size
Главная Форум
Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

Копирование файлов с интернета (http протокол).
(1 чел.) (1) гость
  • Страница:
  • 1

ТЕМА: Копирование файлов с интернета (http протокол).

Копирование файлов с интернета (http протокол). 8 года, 11 мес. назад #30

  • ExtazY
  • Вне сайта
  • Слушатель
  • Постов: 21
  • Репутация: 2
Здравствуйте уважаемые Делфиняни или Делфийцы. )

Подскажите пожалуйста как
скопировать файл с интернета?

К примеру: CopyFile('yandex.ru/yandex.jpg','C:\123.jpg', true);

Re:Копирование файлов с интернета (http протокол). 8 года, 11 мес. назад #34

  • admin
  • Вне сайта
  • Администратор
  • Постов: 19
  • Репутация: 0
Начните с простого:
Добавьте в uses wininet;
procedure TForm1.Button1Click(Sender: TObject);
var
 ArrayLen:array[1..1024] of byte;
 Len:DWORD;
 F:File;
 session,url:HInternet;
 save_file:String;
 i,j:integer;
begin
   try
    session:=InternetOpen(Pchar(ExtractFileName(Application.ExeName)),INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
    save_file:='http://путь к файлу';
    url:=InternetOpenUrl(session,PAnsiChar(save_file),nil,0,0,0);
    for i:=1 to length(save_file) do
     begin
      if save_file[i]='/' then
       j:=i;
     end;
    Delete(save_file,1,j);
    AssignFile(F,'C:\'+save_file);
    Rewrite(F,1);
    repeat
     InternetReadFile(url,@ArrayLen,SizeOf(ArrayLen),Len);
     BlockWrite(F,ArrayLen,Len);
    until
     Len=0;
    CloseFile(F);
    InternetCloseHandle(session);
   except
    on e:Exception do
   end;
end;
С уважением,
администратор сайта delphi-help.ru
Изменено: 8 года, 11 мес. назад от admin.

Re: Копирование файлов с интернета (http протокол). 8 года, 5 мес. назад #72

  • ExtazY
  • Вне сайта
  • Слушатель
  • Постов: 21
  • Репутация: 2
Спасибо большое. Работает отлично.
Еще тогда вопрос в тему. Как проверить наличие файла в интернете?

Re: Копирование файлов с интернета (http протокол). 8 года, 5 мес. назад #77

  • admin
  • Вне сайта
  • Администратор
  • Постов: 19
  • Репутация: 0
function InternetOpenUrl(hInet: HINTERNET;
lpszUrl: PChar;
lpszHeaders: PChar;
dwHeadersLength: DWORD;
dwFlags: DWORD;
dwContext: DWORD): HINTERNET; stdcall;


Параметры:

HInet – указатель, полученный после вызова InternetOpen.
LpszUrl – URL , до которого нужно получить доступ. Обязательно должен
начинаться с указания протокола, по которому будет происходить соединение.
Поддерживаются следующие протоколы - ftp:, gopher:, http:, https:.
LpszHeaders – содержит заголовок HTTP запроса.
DwHeadersLength – длина заголовка. Если заголовок nil, то можно установить значение –1, и длина будет вычислена автоматически.
DwFlags – флаг, задающий дополнительные параметры перед выполнением функции.
Вот некоторые его значения: INTERNET_ FLAG_EXISTING_CONNECT,
INTERNET_FLAG_HYPERLINK, INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP,
INTERNET_FLAG_NO_AUTO_REDIRECT, INTERNET_FLAG_NO_CACH E_WRITE,
INTERNET_FLAG_NO_COOKIES.

Возвращается значение TRUE, если соединение успешно, или FELSE - в
противном случае. Теперь можно спокойно считывать нужный файл функцией
InternetReadFile.
С уважением,
администратор сайта delphi-help.ru

Re: Копирование файлов с интернета (http протокол). 8 года, 5 мес. назад #81

  • ExtazY
  • Вне сайта
  • Слушатель
  • Постов: 21
  • Репутация: 2
Спасибо огромное.

Не проверил еще как работает, но пока есть время написать, то пишу.

интернет соединение можно проверить так:

function NetConect: Boolean;
var
dwConnectionTypes: DWORD;
begin
dwConnectionTypes:= INTERNET_CONNECTION_MODEM+INTERNET_CONNECTION_LAN+INTERNET_CONNECTION_PROXY;
Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;
.
Можно собрать одну большую функцию по такому алгоритму:
Если есть интернет соединение, то проверить наличие URL,
если такой URL существует, то скачать его,
если же интернет соединения нет или оно разорвано, то сообщить о его потере и ожидать.

Такая функция пригодиться для написания DownLoad программ.
Но сам я делфи знаю средне, поэтому не берусь собирать всё это в кучку.
Изменено: 8 года, 5 мес. назад от ExtazY. Причина: Невнимательность моя.
  • Страница:
  • 1

Авторизация



Счетчики