【发布时间】:2013-03-01 23:21:58
【问题描述】:
如何在下载之前检查 JPG url 是否存在,以避免异常?
procedure TForm1.Button1Click(Sender: TObject);
var
FS: TFileStream;
Url, FileName: String;
I, C: Integer;
begin
for I := 1 to 1000 do
begin
Url := 'http://www.mysite.com/images/' + IntToSTr(I) + '/Image.jpg';
FileName := 'C:\Images\' + IntToStr(I) + '.jpg';
FS := TFileStream.Create(FileName, fmCreate);
try
try
IdHTTP1.Get(Url);
c := IdHTTP1.ResponseCode;
if C = 200 then
IdHTTP1.Get(Url, FS);
except
end;
Application.ProcessMessages;
finally
Fs.Free;
end;
end;
end;
【问题讨论】:
-
您必须处理异常。请注意,除了错误 404 之外,还可能出现不同的错误,并且由于 Indy 是由异常驱动的,因此必须处理它们。在this question 中提出了类似的问题。
-
另一方面,如果要避免异常,请在
AIgnoreReplies参数中包含404状态。 -
@jachguate,忽略状态 404 将使代码不安全。想想可能发生的其他异常情况。
-
Johnny,
IdHTTP1.Get(Url, FS, [404]);,但如果您遇到不同的错误,祝您好运。 @jachguate,这就是我为TIdHTTP写关于异常处理的帖子的原因。 -
Eww,
Application.ProcessMessages:(
标签: delphi delphi-2010