Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: CL | DM;

Вниз

как закачать картинку с помощью idhttp1   Найти похожие ветки 

 
Officeman   (2006-10-12 14:03) [0]

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

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


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

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

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


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

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


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

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


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

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

"EidProtocolReplyErroro"    400 Bad Request

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


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

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


 
mfender ©   (2006-10-14 09:31) [6]


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

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

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

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


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

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);


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

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

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;



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


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

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:27) [10]

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

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


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

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

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

Fly Bird V11_33446.jpg

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

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

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

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


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


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

т.е.

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


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

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

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:55) [14]

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



Страницы: 1 вся ветка

Текущий архив: 2006.10.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.03 c
3-1156904590
Lex_!
2006-08-30 06:23
2006.10.29
DBGrid вставка и удаление полей в RunTime


1-1158764711
Alvin
2006-09-20 19:05
2006.10.29
Бесплатный Хостинг с поддержкой CGI на Delphi


5-1141901266
mss
2006-03-09 13:47
2006.10.29
Как заменить


2-1160679520
dreamse
2006-10-12 22:58
2006.10.29
Проблема при перезагрузке


2-1160996448
Zancik
2006-10-16 15:00
2006.10.29
Слайд-шоу