我使用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");
}
});
});
答案 0 :(得分:1)
此时你的DownloadBlob函数没有返回任何内容。这是一个无效的功能。所以你的客户永远不会收到blob。目前它正在做的是将blob写入服务器磁盘上的文件(download.FilePath)。如果要在休息呼叫中下载任何内容,则应将该文件返回给客户端。
答案 1 :(得分:0)
您的代码看起来很好。运行后,blob文件应该已经下载到你的文件路径'地点。 ' System.UnauthorizedAccessException的'通常在您无权删除/创建文件夹下的文件时发生。我想你可以检查一下你是否对#34; FilePath'位置。