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

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

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

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

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

Знаю несколько способов скачать изображение с интернета по средствам Delphi. Но, как скачать по такой ссылке?
http://homeandinteriors.ru/wp-conten...нтерьера-3.jpg
Не знаю в чем проблема, в кириллице или в черточках(-–-), но ошибка:
Код:

HTTP/1.1 404 Not Found

igrok111 вне форума   Ответить с цитированием
Старый 13.01.2017, 08:56   #2
Shouldercannon
Профессионал
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Адрес: Пенза
Сообщений: 1,673
Репутация: 192

icq: 473732523
По умолчанию

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, 09:13   #3
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 107
Репутация: 25
По умолчанию

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

HTTP.Get(URL_LIST.Strings[i], TIdTextEncoding.UTF8)

__________________
Пишу много и развернуто

Последний раз редактировалось Аватар; 13.01.2017 в 10:33.
Heneken87 вне форума   Ответить с цитированием
Старый 13.01.2017, 17:27   #4
Shouldercannon
Профессионал
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Адрес: Пенза
Сообщений: 1,673
Репутация: 192

icq: 473732523
По умолчанию

Скачивая по ссылке имеющей кириллицу такую же ошибку получил. Значит ссылку надо перекодировать
Цитата:
Или все таки лучше сделать так?
Код:

HTTP.Get(URL_LIST.Strings[i], TIdTextEncoding.UTF8)

Нет контейнера для приёма файла и врятли третий параметр тут прикрутишь

Последний раз редактировалось Shouldercannon; 13.01.2017 в 17:48.
Shouldercannon вне форума   Ответить с цитированием
Старый 13.01.2017, 21:32   #5
Aliens_wolfs
Участник клуба
 
Регистрация: 16.12.2009
Адрес: Санкт-Петербург
Сообщений: 667
Репутация: 335
По умолчанию

В каком 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 в 13:09.
Aliens_wolfs вне форума   Ответить с цитированием
Старый 18.01.2017, 16:01   #6
igrok111
Форумчанин
 
Регистрация: 12.07.2012
Сообщений: 140
Репутация: 27
По умолчанию

Цитата:
Сообщение от 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, 18:04   #7
Aliens_wolfs
Участник клуба
 
Регистрация: 16.12.2009
Адрес: Санкт-Петербург
Сообщений: 667
Репутация: 335
По умолчанию

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



Опции темы

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

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

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

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




23:11.


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

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


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