Главная страница
    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.037 c
3-1156953026
bmp2006
2006-08-30 19:50
2006.10.29
Не удается выполнить запрос с подзапросом


1-1158678502
_dimka
2006-09-19 19:08
2006.10.29
А разве метод SaveToStream у TStringList абстрактный?


6-1149542592
CShooter
2006-06-06 01:23
2006.10.29
NMpop31.GetMailMessage(NMpop31.MailCount) выдает ERangeError


2-1160591083
sss1
2006-10-11 22:24
2006.10.29
Listbox нужный итем


2-1160419230
redlord
2006-10-09 22:40
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский