我有一些文件上传到文件主机,我想使用 Delphi 以编程方式下载这些文件。它们不需要任何验证码或类似的东西,通常您只需按一个按钮即可获得文件。让我们以此为例。
现在我想我可以简单地获取立即下载 - 按钮指向的 URL,使用 TIdHTTP.Get 请求并将其保存为 MemoryStream / Filestream / 任何东西。复制链接地址指向这个站点,当输入到我的浏览器时会弹出下载提示。
var
MemStream: TMemoryStream;
code: string; // added for solution
number: integer; // added for solution
begin
with TIdHTTP.Create(nil) do
try
HandleRedirects := true;
System.Delete(code,1,AnsiPos('var n =',code)+7); // added
number := StrToInt(AnsiLeftStr(code,AnsiPos(' ',code)-1)) + 1; // added
MemStream := TMemoryStream.Create;
try
// Get('http://www56.zippyshare.com/d/5862319/604061/bgAvgTable.png', MemStream);
Get(TIdURI.URLEncode('http://www56.zippyshare.com/d/5862319/' + IntToStr(number)
+ '/bgAvgTable.png'), MemStream); // added for solution
MemStream.SaveToFile('test.png');
finally
MemStream.Free;
end;
finally
Free;
end;
end;
但是,使用检查工具我发现它包含一个 302 重定向到原始站点,因此在执行 GET 请求时我必须设置 HandleRedirects 以避免错误消息,并且我得到原始站点的 HTML 代码而不是我的文件曾怀疑。
所以,我有点困惑 1)我以某种方式从浏览器获取文件,尽管 URL 只包含 302 重定向到上一页, 2)我可以在我的代码中实现相同的目标。你们中的任何人可能会在那里教育我一点吗?;)
编辑
感谢您的输入,我可以找到问题,结果是我必须使用的地址是使用随机数生成的,该随机数可以在原始源中找到。因此,首先发布一个获取号码的请求就可以了。我已经相应地编辑了代码。