2016-02-27 63 views
0

我已經使用WCF REST服務創建了Azure Cloud Service。我正在開發blob的本地存儲開發。目前,我已經能夠將容器中的文件從計算機上傳到Listbox1中。現在,我需要從我的Listbox1中選擇一個項目(blob)並下載所選項目。 這裏是我的代碼:在JavaScript中下載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"); 
 
    } 
 
    }); 
 

 
});

+0

有沒有你得到的錯誤? –

+0

是的,我有這個問題: mscorlib中發生了類型'System.UnauthorizedAccessException'的異常。但沒有在用戶代碼中處理 其他信息:訪問路徑'C:\'被拒絕 我已經創建了一個輸入,我在其中設置我的路徑 – Huby03

回答

1

這時你DownloadBlob功能不返回任何東西。這是一個無效函數。所以你的客戶永遠不會收到這個blob。目前正在做的是將blob寫入服務器磁盤上的文件(download.FilePath)。如果您想在您的其他電話中下載任何內容,則應將該文件返回給客戶端。

0

你的代碼看起來不錯。運行後,blob文件應該已經下載到您的'FilePath'位置。當您無權刪除/創建文件夾下的文件時,通常會發生'System.UnauthorizedAccessException'。我認爲你可以檢查你是否有寫訪問「FilePath」的位置。