簡體   English   中英

下載JavaScript中的Blob

[英]Download a Blob in JavaScript

我已經使用WCF REST服務創建了Azure雲服務。 我正在使用Blob進行本地存儲開發。 目前,我已經能夠從計算機中的容器中上傳文件,並在Listbox1中列出它們。 現在,我需要從Listbox1中選擇一個項目(blob)並下載所選項目。 這是我的代碼:

public void DownloadBlob(AzureDataContract download) {
    // Connect to the storage account's blob endpoint 
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("AzureStorageConnectionString"));
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

    // Create the blob storage container 
    CloudBlobContainer container = blobClient.GetContainerReference(download.ContainerName);
    container.CreateIfNotExists();

    // Create the blob in the container 
    CloudBlockBlob blob = container.GetBlockBlobReference("test");

    using (var fileStream = System.IO.File.OpenWrite(download.FilePath))
    {
        blob.DownloadToStream(fileStream);
    }
}

然后,我嘗試使用JQuery和Ajax調用我的方法,如下所示:

 $('#btnDownload').click(function() { var download = { "ContainerName": $("#listContainer").val(), "FilePath": $("#listBlob option:selected").val() }; $.ajax({ type: "POST", url: "http://localhost:49416/AzureService.svc/DownloadBlob", data: JSON.stringify(download), contentType: "application/json; charset=utf-8", dataType: "json", processData: true, success: function(data) { alert("downloading"); }, error: function(data) { alert("error"); } }); }); 

目前,您的DownloadBlob函數未返回任何內容。 這是一個無效函數。 因此,您的客戶將永遠不會收到斑點。 目前,它正在做的是將Blob寫入服務器磁盤上的文件(download.FilePath)。 如果要在其余呼叫中下載任何內容,則應將文件返回給客戶端。

您的代碼看起來不錯。 運行后,該blob文件應已下載到您的“ FilePath”位置。 當您無權刪除/創建文件夾下的文件時,通常會發生“ System.UnauthorizedAccessException”。 我認為您可以檢查您是否對“ FilePath”位置具有寫權限。

暫無
暫無

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

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