Him*_*iya 2 azure azure-storage-blobs
我正在尝试在Azure blob上创建PDF。我的代码如下。我在Blob上创建PDF时遇到问题。我无法创建PDF,因此不支持Filestream。
FileStream fs = new FileStream("Chapter1_Example1.pdf", FileMode.Create, FileAccess.Write, FileShare.None);
iTextSharp.text.Document doc = new iTextSharp.text.Document();
PdfWriter writer = PdfWriter.GetInstance(doc, fs);
doc.Open();
doc.Add(new Paragraph("Hello World"));
var permissions = container.GetPermissions();
permissions.PublicAccess = BlobContainerPublicAccessType.Blob;
container.SetPermissions(permissions);
string uniqueBlobName = string.Format("rewhizzdocuments/{0}", "helloworld.pdf");
CloudBlockBlob blob = container.GetBlockBlobReference(uniqueBlobName);
blob.Properties.ContentType = "application/pdf";
blob.UploadFromStream(fs);
doc.Close();
Run Code Online (Sandbox Code Playgroud)
FileStream主要用于处理文件,由于您对动态创建PDF文档感兴趣,因此建议您MemoryStream改用它。
看一下下面的示例代码,它使用了MemoryStream:
private static void CreatePdf()
{
var account = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
var blobClient = account.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("pdftest");
using (MemoryStream ms = new MemoryStream())
{
using (var doc = new iTextSharp.text.Document())
{
PdfWriter writer = PdfWriter.GetInstance(doc, ms);
doc.Open();
doc.Add(new Paragraph("Hello World"));
}
var byteArray = ms.ToArray();
var blobName = "hello-world.pdf";
var blob = container.GetBlockBlobReference(blobName);
blob.Properties.ContentType = "application/pdf";
blob.UploadFromByteArray(byteArray, 0, byteArray.Length);
}
}
Run Code Online (Sandbox Code Playgroud)
如果仍然要使用FileStream,您可以做的另一件事是将文件保存在磁盘上,然后使用UploadFromFile方法上CloudBlockBlob载该文件。
| 归档时间: |
|
| 查看次数: |
1657 次 |
| 最近记录: |