6

我一直在尝试通过 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 ”。

可以指出我做错了什么吗?我为此搜索了很多,但找不到任何有效且简单的东西!

非常感谢!

4

2 回答 2

7

TDownloadURL只是微软URLDownloadToFile()功能的一个薄包装,它支持 HTTPS 就好了。

TDownloadURL不幸的是,没有告诉你为什么URLDownloadToFile()失败。但是,我可以看到您将FileName属性设置为只是一个文件夹路径,但您需要将其设置为要创建以保存下载数据的目标文件的完整路径和文件名。IOW,改变这个:

FileName := 'D:\';

对此:

FileName := 'D:\8106108098_08e298f0d9_b.jpg';
于 2013-01-14T19:49:24.770 回答
3

使用 Remy 的更改文件名的答案来指定正确的保存位置,但要修复,请将 ExecuteTarget 行更改为类似

ExecuteTarget(Self);

我刚刚用这两个更改尝试了您的代码,它成功下载了图像。本质上,该组件需要一个句柄来引用,从这里

于 2013-01-14T21:44:02.277 回答