我一直在尝试通过TDownloadURL类创建(TFileStream)PDF,但我真的遇到了从URL获取文件/流的麻烦,特别是如果URL是HTTPS。
我不确定我是否清楚,但我会发布一个片段,这样可能有助于理解:
implementation
var pdfStreamed: TDownloadUrl;
var fileStream : TFileStream;
procedure generateStream;
begin
pdfStreamed:= TDownLoadURL.Create(nil);
with pdfStreamed do
begin
URL := 'https://farm9.staticflickr.com/8327/8106108098_08e298f0d9_b.jpg'; //stream;
FileName := 'D:\';
ExecuteTarget(nil);
// Execute;
end;
end;
URL属性在HTTP中同样存在于HTTPS中!但它给我一个错误: 异常类异常,消息“下载URL时出错:https://farm9.staticflickr.com/8327/8106108098_08e298f0d9_b.jpg”。
可以指出我做错了什么?我经常搜索这个,但找不到任何有用的东西!
非常感谢!
答案 0 :(得分:6)
TDownloadURL
只是微软URLDownloadToFile()
函数的一个很薄的包装,它支持HTTPS就好了。
TDownloadURL
没有告诉你URLDownloadToFile()
失败的原因。但是,我可以看到您将FileName
属性设置为仅文件夹路径,但您需要将其设置为将创建的目标文件的完整路径和文件名以保存下载的数据。 IOW,改变这个:
FileName := 'D:\';
对此:
FileName := 'D:\8106108098_08e298f0d9_b.jpg';
答案 1 :(得分:3)
使用Remy的答案更改文件名以指定要保存的正确位置,但要修复,请将ExecuteTarget行更改为
ExecuteTarget(Self);
我刚尝试了这两个更改的代码,并成功下载了图像。从本质上讲,该组件需要一个句柄来引用Here