Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как закачать картинку с помощью idhttp1 [D6, 2000]


Officeman ©   (2006-10-12 14:03:00) 

как правильно сохранить файл на диске, полученный с помощью 'get'

idhttp1.Get('пусть к картинке')


Officeman   (2006-10-14 16:55:00) [1]

всё. всем спасибо. всё бачет.  всмысле работает.
желаю всем успехов.


Officeman   (2006-10-14 16:22:00) [2]

ТАк нормально, или тупо?

procedure TForm1.Button1Click(Sender: TObject);
var
TOVAR,REZ,p:string;
ss,ai,h:integer;
begin

TOVAR:=edit1.Text; // входные данные, имя файла (с пробелами)

ss:=0;

for ai:=1 to length(TOVAR) do begin

 if TOVAR[ai]=' ' then begin
   ss:=ss+1;

    if ss>0 then begin
     p:=Copy(TOVAR,h+1,ai-h-1);h:=ai;  // делим
     REZ:=REZ+p+'%20';                 // добавляем '%20'
    end;

 end;

end;
REZ:=REZ+Copy(TOVAR,h+1,length(TOVAR)); // добавляем '%20' последную часть

memo1.lines.add(REZ);                   // выводим результат

end;


Officeman   (2006-10-14 16:06:00) [3]

т.е.

while Pos(' ', TOVAR) > 0 do begin
  TOVAR[Pos(' ', TOVAR)] := ' %';
end;


Officeman   (2006-10-14 16:05:00) [4]

нашёл ошибку,

URL:  имя катринки может быть С ПРОБЕЛАМИ

Fly Bird V11_33446.jpg

при передачи этого имени в GET, надо избавиться от <пробелов>
вместо них добавить  %20

как это сделать??

чтобы символ добавить то так.

 while Pos(' ', TOVAR) > 0 do begin
   TOVAR[Pos(' ', TOVAR)] := '+';
 end;


как добавить ещё и цифры?  с Char чёто неполучается (((


Officeman   (2006-10-14 13:27:00) [5]

Percent, огромное спасибо. спасли.

p.s. запомнил.


Percent   (2006-10-14 13:15:00) [6]

try
 IdHttp1.Get(url_server.Text+TOVAR, stream);
except
 on E: Exception do
   Label1.Caption := E.Message;
end;

P.S. Для наглядности запускать не из-под Delphi IDE, или отключить в настройках остановку при исключении.


Officeman   (2006-10-14 13:11:00) [7]

при таком варианте.

stream := nil;
try
stream := TFileStream.Create(AppDir+'data\images\'+Trim(LVkey.Text)+'-'+inttostr(strtoint(LV.Items[strtoint(LVkeyNom.Caption)].SubItems[1])+IMAGE_ID)+'.jpg', fmCreate);
IdHttp1.Get(url_server.Text+TOVAR, stream);
finally


при нерабочей ссылке, показывает ошибку в
IdHttp1.Get(url_server.Text+TOVAR, stream);

далее проперить можно так,


IdHttp1.Get(url_server.Text+TOVAR, stream);
try

finally

end;



..но этот код проверяет успешность скачки, но при мёртвой ссылке также вылелает


Officeman   (2006-10-14 12:33:00) [8]

Help me!

даётся ссылка на jpeg файл
надо его скачать и записать на диск.

*с условием качать только один раз

1) в данном варианте скачивается нормально, но если ссылка нерабочая то
процесс прерывается.

   assignfile (fsave,AppDir+'data\images\'+inttostr(strtoint(LV.Items[strtoint(LVkeyNom.Caption)].SubItems[1])+IMAGE_ID)+'.jpg');
   rewrite (fsave);
   writeln (fsave, idhttp3.Get(url_server.Text+TOVAR));
   closefile (fsave);


mfender   (2006-10-14 09:31:00) [9]


> Officeman   (14.10.06 02:31) [4]
> если файла нет в Интернете по указанному адресу. то выдаётся
> такая ошибка
>
> 'EidProtocolReplyErroro'    400 Bad Request
>
> что делать? подскажите

Ketmar совсем не матерился, а просто имел ввиду отслеживание ошибок в блоках try...except.

Во все спорных местах следует предупреждать возможные исключения (читай - нужно их предвидеть). Т.е., в данном случае это может выглядеть так:

try
 {действия по загрузке файла}
except
 on EidProtocolReplyErroro do
 begin
   {обработка исключения в случае, если файла нет на диске}
 end;
end;


Ketmar   (2006-10-14 06:13:00) [10]

таки ловить это исключение. для чего полезно сначала язык выучить, на котором писать собрался.


Officeman   (2006-10-14 02:31:00) [11]

если файла нет в Интернете по указанному адресу. то выдаётся такая ошибка

'EidProtocolReplyErroro'    400 Bad Request

что делать? подскажите


Officeman   (2006-10-14 02:25:00) [12]

Подскажите пожалуйста. как  проверить существует этот адрес или нет.
а то картинки нету и мне возвращается ошибка ;(


Dmitrij_K   (2006-10-12 14:28:00) [13]

var
stream: TFileStream;
begin
stream := nil
try
 stream := TFileStream.Create('картинка', fmCreate);
 IdHttp1.Get(url, stream);
finally
 stream.free;
end;


Officeman   (2006-10-12 14:07:00) [14]

уже разобрался.

writeln (fsave, idhttp3.Get(url_server.Text+TOVAR));


Наверх

Титульная страница Поиск, карта сайта Написать письмо