Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2017, 12:08   #1
igrok111
Форумчанин
 
Регистрация: 12.07.2012
Сообщений: 140
По умолчанию Загрузить изображение по ссылке с кириллицей

Знаю несколько способов скачать изображение с интернета по средствам Delphi. Но, как скачать по такой ссылке?
http://homeandinteriors.ru/wp-conten...нтерьера-3.jpg
Не знаю в чем проблема, в кириллице или в черточках(-–-), но ошибка:
Код:
HTTP/1.1 404 Not Found
igrok111 вне форума Ответить с цитированием
Старый 13.01.2017, 07:56   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Delphi XE 10.1. Без проблем
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
  HTTP: TIdHTTP;
  FS: TFileStream;
begin
  try
    HTTP := TIdHTTP.Create(nil);
    HTTP.ConnectTimeout := 5000;
    FS := TFileStream.Create(ExtractFilePath(Application.ExeName) + '3.jpg', fmCreate);
    try
      HTTP.Get('http://homeandinteriors.ru/wp-content/uploads/2012/11/Brabbu-%E2%80%93-%D0%BF%D0%BE%D1%80%D1%82%D1%83%D0%B3%D0%B0%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B9' +
      '-%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD%D0%B5%D1%80%D1%81%D0%BA%D0%B8%D0%B9-%D0%B1%D1%80%D0%B5%D0%BD%D0%B4-%D0%B2%D1%8B%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D1%8E%D1%89' +
      '%D0%B8%D0%B9-%D1%8D%D0%BA%D1%81%D0%BA%D0%BB%D1%8E%D0%B7%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D1%8B-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%8C%D0%B5%D1%80%D0%B0-3.jpg', FS);
    except
      on E: Exception do
      begin
        ShowMessage(E.Message);
      end;
    end;
  finally
    FreeAndNil(HTTP);
    FreeAndNil(FS);
  end;
end;
Shouldercannon вне форума Ответить с цитированием
Старый 13.01.2017, 08:13   #3
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Delphi XE 10.1. Без проблем
Кирилицу тож хавает? Если да, то я честно <censored> ваш код, мне пригодится=))
Или все таки лучше сделать так?
Код:
HTTP.Get(URL_LIST.Strings[i], TIdTextEncoding.UTF8)
Пишу много и развернуто

Последний раз редактировалось Аватар; 13.01.2017 в 09:33.
Heneken87 вне форума Ответить с цитированием
Старый 13.01.2017, 16:27   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Скачивая по ссылке имеющей кириллицу такую же ошибку получил. Значит ссылку надо перекодировать
Цитата:
Или все таки лучше сделать так?
Код:
HTTP.Get(URL_LIST.Strings[i], TIdTextEncoding.UTF8)
Нет контейнера для приёма файла и врятли третий параметр тут прикрутишь

Последний раз редактировалось Shouldercannon; 13.01.2017 в 16:48.
Shouldercannon вне форума Ответить с цитированием
Старый 13.01.2017, 20:32   #5
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

В каком Delphi пытаетесь реализовать?
Можно кодировать из вашей ссылки "португальский-дизайнерский-бренд-выпускающий-эксклюзивные-предметы-интерьера-3.jpg" в
"-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%8 C%D0%B5%D1%80%D0%B0-3.jpg"


Вот рабочий кодировщик
Код:
Function UrlEncode(Str: string): string;

  function CharToHex(Ch: Char): Integer;
  asm
    and eax, 0FFh
    mov ah, al
    shr al, 4
    and ah, 00fh
    cmp al, 00ah
    jl @@10
    sub al, 00ah
    add al, 041h
    jmp @@20
@@10:
    add al, 030h
@@20:
    cmp ah, 00ah
    jl @@30
    sub ah, 00ah
    add ah, 041h
    jmp @@40
@@30:
    add ah, 030h
@@40:
    shl eax, 8
    mov al, '%'
  end;

var
  i, Len: Integer;
  Ch: Char;
  N: Integer;
  P: PAnsiChar;
begin
  Result := '';
  Len := Length(Str);
  P := PAnsiChar(@N);
  for i := 1 to Len do
  begin
    Ch := Str[i];
 // здесь исключения символов которые не кодируются
   if Ch in ['0'..'9', 'A'..'Z', 'a'..'z', '_', ':', '/', '.'] then
      Result := Result + Ch
    else
    begin
      if Ch = ' ' then
        Result := Result + '+'
      else
      begin
        N := CharToHex(Ch);
        Result := Result + P;
      end;
    end;
  end;
end;
Использовать с кодом Shouldercannon
Код:
sUrl:= UrlEncode(AnsiToUTF8('http://homeandinteriors.ru/wp-content/uploads/2012/11/Brabbu' + 
'-–-португальский-дизайнерский-бренд-выпускающий-эксклюзивные-предметы-интерьера-3.jpg'));
HTTP.Get(sUrl, FS)

Последний раз редактировалось Aliens_wolfs; 14.01.2017 в 12:09.
Aliens_wolfs вне форума Ответить с цитированием
Старый 18.01.2017, 15:01   #6
igrok111
Форумчанин
 
Регистрация: 12.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Delphi XE 10.1. Без проблем
Код:
('http://homeandinteriors.ru/wp-content/uploads/2012/11/Brabbu-%E2%80%93-%D0%BF%D0%BE%D1%80%D1%82%D1%83%D0%B3%D0%B0%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B9' +
      '-%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD%D0%B5%D1%80%D1%81%D0%BA%D0%B8%D0%B9-%D0%B1%D1%80%D0%B5%D0%BD%D0%B4-%D0%B2%D1%8B%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D1%8E%D1%89' +
      '%D0%B8%D0%B9-%D1%8D%D0%BA%D1%81%D0%BA%D0%BB%D1%8E%D0%B7%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D1%8B-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%8C%D0%B5%D1%80%D0%B0-3.jpg', FS);
А как преобразовать ссылку в такой вид? Код, предоставленный Aliens_wolfs не работает, по прежнему 404.
igrok111 вне форума Ответить с цитированием
Старый 18.01.2017, 17:04   #7
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Так мой код в такой вид и делает. Что то неправильно делаете
Aliens_wolfs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузить изображение из БД в PictureBox C# SeregaVili Помощь студентам 2 16.11.2015 00:59
Загрузить изображение в вк, с помощью API Rakim4ik Работа с сетью в Delphi 0 19.11.2013 18:07
Загрузить изображение zont_11 Microsoft Office Excel 3 15.02.2011 12:24
Загрузить изображение и текст larin1974 Помощь студентам 2 21.12.2009 17:17
Как сохранить изображение по ссылке? Indy. TwiX Работа с сетью в Delphi 4 29.11.2009 21:09