我正在尝试在我的MVC项目中创建一个我的View的pdf,并将其保存到Azure blob存储中,而不是在我的服务器上有该文件的副本。
我正在使用Rotativa来创建我的pdf,这很好。
return new ActionAsPdf(ContractVersion) { FileName = "documentname.pdf" };
我使用以下代码将文件保存到Azure存储。
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve a reference to a container.
CloudBlobContainer container = blobClient.GetContainerReference("contracts");
// Retrieve reference to a blob named "myblob".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob");
// Create or overwrite the "myblob" blob with contents from a local file.
using (var fileStream = System.IO.File.OpenRead(@"c:\test blob.txt"))
{
blockBlob.UploadFromStream(fileStream);
}
但我不知道如何将两个功能组合起来从视图创建pdf然后保存到blob。
我希望我的问题很明确。感谢您的期待。
答案 0 :(得分:1)
我在控制器方法中使用MVC5 Partial View实现了它,为了清楚起见,我将其缩写为未显示我的Azure服务对象,它返回blob对象,因为这是标准MS的东西。就像一种享受!
使用Blob对象上的UploadFromStream上传到Azure Blob
var file = new Rotativa.PartialViewAsPdf("viewname", model) { FileName = "test" + ".pdf" };
byte[] applicationPDFData = file.BuildPdf(this.ControllerContext);
Stream stream = new MemoryStream(applicationPDFData);
blob.UploadFromStream(stream);
答案 1 :(得分:0)