![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как закачать картинку с помощью 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));