我从以下azure存储器下载文件时获取路径被拒绝异常是代码片段。
string path = @"c:\TEMP";
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["CloudStorageString"]);
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
// Retrieve reference to a blob named "photo1.jpg".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("167_PostP45_temp.png");
// Save blob contents to a file.
using (var fileStream = System.IO.File.OpenWrite(path))
{
blockBlob.DownloadToStream(fileStream);
}
答案 0 :(得分:2)
您正在名为C:
的{{1}}根目录上创建一个没有扩展名的文件。 TEMP
的根是受保护的位置,非管理程序无法写入。
另一件可以给你这个例外的事情就是如果你试图在一个目录上调用C:
,我认为这更容易发生在你身上。
如果您要保存到文件夹File.OpenWrite
,则必须将文件名添加到您要打开的路径中。
C:\TEMP
这也假定文件夹using (var fileStream = File.OpenWrite(Path.Combine(path, "167_PostP45_temp.png"))
{
blockBlob.DownloadToStream(fileStream);
}
已存在。如果您想使用用户的实际临时文件夹,请使用C:\TEMP
来获取它
Path.GetTempPath()
答案 1 :(得分:1)
有几个问题。首先,正如Guarav Mantri所说,你需要打开文件进行写入,而不是目录。其次,您应该使用System.IO.Path.GetTempPath()来检索临时目录,并给出:
using (var fileStream = System.IO.File.OpenWrite(System.IO.Path.GetTempPath() + "\\167_PostP45_temp.png"))
{
blockBlob.DownloadToStream(fileStream);
}
答案 2 :(得分:0)
您能否请尝试以下代码:
using (var fileStream = System.IO.File.OpenWrite(path + "\\167_PostP45_temp.png"))
{
blockBlob.DownloadToStream(fileStream);
}