簡體   English   中英

來自Azure存儲的文件流blob

[英]Filestream a blob from Azure storage

我在Azure中有圖像,需要使用pdfJet添加到pdf中。

這是我在磁盤上讀取映像時使用的代碼,但是我有很多映像,因此從Azure下載它們沒有意義。

Image image = new Image(objects, new BufferedStream(new FileStream(LocalPath + "image.PNG", FileMode.Open, FileAccess.Read)), ImageType.PNG);

PS:這是在asp.net網絡表單中完成的。

謝謝您的幫助。

我現在正在使用以下功能來閱讀PDF:

    public MemoryStream DownloadToMemoryStream(DTO.BlobUpload b)
    {
        CloudStorageAccount storageAccount = Conn.SNString(b.OrgID);
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference(b.Container);
        CloudBlockBlob blob = container.GetBlockBlobReference(b.FileName);
        var sasToken = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
        {
            Permissions = SharedAccessBlobPermissions.Read,
            SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(10),//assuming the blob can be downloaded in 10 miinutes
        }, new SharedAccessBlobHeaders()
        {
            ContentDisposition = "attachment; filename=file-name"
        });
        using (MemoryStream ms = new MemoryStream())
        {
            blob.DownloadToStream(ms);
            return ms;
        }

    }

在aspx頁面中,我使用:

MemoryStream pdfScript = B.DownloadToMemoryStream(b);

讀取流:

SortedDictionary<Int32, PDFobj> objects = pdfFinalScript.Read(pdfScript);

但是我收到錯誤消息:無法訪問關閉的流

我已經研究了如何打開流,但是還沒有做到。

您能幫忙嗎,謝謝

根據您的描述,您可以從Azure下載blob。 您可以參考以下幾種方式。

1. 使用blob url下載

創建具有讀取權限和Content-Disposition標頭集的共享訪問簽名,並基於此創建Blob URL並使用該URL。 在這種情況下,blob內容將直接從存儲流傳輸到客戶端瀏覽器。

2.獲取blob和DownloadFileFromBlob

3.將文件下載到本地的確切路徑

網絡表格

您可以使用Response.Redirect(blobUrl); 重定向blob網址並下載。

在.aspx中:

<asp:Button ID="Button1" runat="server" Text="Click Me" OnClick="Button1_Click" /> 

在aspx.cs中:

protected void Button1_Click(object sender, EventArgs e)
        {
            CloudStorageAccount account = new CloudStorageAccount(new StorageCredentials("accountname", "accountkey"), true);
            var blobClient = account.CreateCloudBlobClient();
            var container = blobClient.GetContainerReference("container");
            var blob = container.GetBlockBlobReference("text.PNG");
            var sasToken = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
            {
                Permissions = SharedAccessBlobPermissions.Read,
                SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(10),//assuming the blob can be downloaded in 10 miinutes
            }, new SharedAccessBlobHeaders()
            {
                ContentDisposition = "attachment; filename=file-name"
            });
            using (MemoryStream ms = new MemoryStream())
            {
                blob.DownloadToStream(ms);
                Image image = new Image(objects, ms, ImageType.PNG);
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM