Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Вниз

как закачать картинку с помощью 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.035 c
2-1160572066
Romas81
2006-10-11 17:07
2006.10.29
как в Delphi запустить другое приложение


3-1156856047
bmp2006
2006-08-29 16:54
2006.10.29
Сложный запрос


2-1160545049
Dima L
2006-10-11 09:37
2006.10.29
OpenDialog


4-1147534057
Sicilla
2006-05-13 19:27
2006.10.29
Строка в системном меню


15-1160377137
IMHO
2006-10-09 10:58
2006.10.29
Крах доллара намечен на октябрь





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский