Azure Web SItes - 如何写入文件

时间:2012-08-30 19:07:54

标签: azure azure-storage azure-storage-blobs abcpdf azure-web-sites

我正在使用abcPDF来动态创建PDF。

我想保存这些PDF以供客户随时检索。最简单的方法(以及我现在在当前服务器上的方式)只是将完成的PDF保存到文件系统。

似乎我坚持使用blob。幸运的是,abcPDF可以保存为流和文件。现在,如何将流连接到blob?我找到了代码,显示blob采用如下流:

blob.UploadFromStream(theStream, options);

abcPDF函数如下所示:

theDoc.Save(theStream)

我不知道如何弥合这个差距。

谢谢! 布拉德

2 个答案:

答案 0 :(得分:4)

作为一种不需要将整个文件保存在内存中的替代方法,您可以尝试这样做:

using (var stream = blob.OpenWrite())
{
    theDoc.Save(stream);
}

修改

在此处添加警告:如果save方法需要可搜索的流,我认为这不会起作用。

答案 1 :(得分:1)

鉴于这种情况并且不知道abcPdf的Save()方法的完整重载列表,似乎你需要一个MemoryStream。类似的东西:

using(MemoryStream ms = new MemoryStream())
{
    theDoc.Save(ms);
    ms.Seek(0, SeekOrigin.Begin);
    blob.UploadFromStream(ms, options);
}

这将完成这项工作。但是如果你正在处理大文件,并且你期望大量的流量(大量的同步PDF创建),你可能只需要一个临时文件。将PDF写入临时文件,然后立即上传blob的临时文件。