Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 02.01.2019, 11:57   #1
BLACK_RAIN
Участник клуба
 
Регистрация: 13.02.2012
Сообщений: 517
Репутация: 119
По умолчанию проверка на существование файла на сервере и доступ к нему

Здравствуйте.
Нужно программно скачать из интернета несколько файлов. Но не просто скачать, а при скачивании выполнить с ними определенные действия. Насколько мне известно, готовых программ для выполнения таких действий не существует. Действия очень простые, но весьма хитрые.
Чтобы ни у кого не возникали вопросы "почему?" и "зачем?", сразу опишу всё подробно:
Есть сайт. На этом сайте хранятся видео-файлы, которые так просто скачать нельзя. Однако, с помощью некоторых программ можно получить прямые ссылки на эти файлы. А так же можно увидеть, что каждый видео-файл хранится на тамошнем сервере разбитым на несколько маленьких файлов длительностью примерно по 10 секунд.
Сами ссылки выглядят примерно вот так:
Код:

https://server/video/id/0.ts
https://server/video/id/1.ts
https://server/video/id/2.ts
https://server/video/id/3.ts
https://server/video/id/4.ts
https://server/video/id/5.ts
https://server/video/id/6.ts
https://server/video/id/7.ts
https://server/video/id/8.ts
https://server/video/id/9.ts
https://server/video/id/10.ts
https://server/video/id/11.ts
https://server/video/id/12.ts
https://server/video/id/13.ts
и т.д.

Если скачать их любым менеджером закачки и запустить в видеоплеере, то все они нормально воспроизводятся. По 10 секунд каждый.
Выходит, что всё элементарно. Пишем программу, которая скачивает все файлы от 0 до N и объединяет их в один большой файл.
На основе примеров из интернета, набросал свой быдлокод:
Код:

var
 Stream: TFileStream;
 url : String;
 fn : string;
 i:integer;
begin
  fn := ExtractFilePath(Application.ExeName) + 'video.ts';
  if FileExists(fn) then
  DeleteFile(fn);
  Stream:= TFileStream.Create(fn, fmCreate or fmOpenWrite);
  for i := 0 to 34 do
  begin
    url := 'http://server/video/id/' + IntToStr(i) + '.ts';
    IdHTTP1.Get(url,Stream);
    Caption := IntToStr(i);
    Application.ProcessMessages;
  end;
  Stream.Free;
end;

И это работает (за исключением мелких нюансов). В результате получается цельный видео-файл, который нормально воспроизводится.
Однако, не всё так просто. При попытке скачать некоторые файлы (любым менеджером закачки), сервер выдаёт ошибку HTTP error 403 Forbidden.
Например, пытаюсь скачать файл https://server/video/id/40.ts и получаю ошибку HTTP error 403 Forbidden.
Но если при возникновении этой ошибки добавлять к имени файла "-muted", то есть ссылка будет выглядеть так: https://server/video/id/40-muted.ts. Тогда файл скачивается нормально, без ошибки 403.
Итак, собственно сам вопрос: как проверить, есть ли доступ к файлу по ссылке (и существует ли он вообще) и скачать другой файл вместо него если доступ к первому ограничен?
BLACK_RAIN вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка существование файла на ftp Wh1teP Общие вопросы Delphi 5 22.04.2013 14:48
проверка на существование файла god5 Общие вопросы Delphi 4 02.03.2013 16:31
Проверка на существование файла на удалённом http сервере NewBoy Общие вопросы C/C++ 0 03.08.2012 10:21
Проверить существование файла на сервере Wicort JavaScript, Ajax 8 04.05.2012 23:16
Проверка существование Email адреса на сервере Бутаков_Сергей Работа с сетью в Delphi 7 29.12.2010 02:55


02:59.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru