Big*_*ddy 6 c# azure azure-storage azure-storage-blobs
我正在尝试将文件下载Azure File Storage到本地文件并出现此异常:
“指定的资源名称包含无效字符。”
这是代码:
if (_cloudFileShare.Exists())
{
CloudFileDirectory rootDir = _cloudFileShare.GetRootDirectoryReference();
CloudFileDirectory tempDir = rootDir.GetDirectoryReference("temp");
if (tempDir.Exists())
{
var file = tempDir.GetFileReference(saveFrom);
file.DownloadToFile(saveTo, FileMode.Open);// OFFENDING LINE
}
}
Run Code Online (Sandbox Code Playgroud)
该saveTo参数是一个字符串,值是这样的:
"C:\Users\Me\AppData\Local\Temp\tmpF2AD.tmp"
Run Code Online (Sandbox Code Playgroud)
的saveFrom说法是这样的:
https://storageaccount.file.core.windows.net:443/fileshare/temp/tmpA2DA.tmp
我正在使用此函数创建参数:
var saveTo = Path.GetTempFileName();
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我对 Azure 没有太多经验。
问题出在你的saveFrom变量上。它应该只包含文件名而不是整个 URL。因此,如果您尝试下载的文件是tmpA2DA.tmp,您的代码应该是:
var file = tempDir.GetFileReference("tmpA2DA.tmp");
Run Code Online (Sandbox Code Playgroud)
请进行此更改并重试。它应该有效。
这是我用来测试的完整代码:
static void FileDownloadTest()
{
var cred = new StorageCredentials(accountName, accountKey);
var account = new CloudStorageAccount(cred, true);
var client = account.CreateCloudFileClient();
var _cloudFileShare = client.GetShareReference("fileshare");
if (_cloudFileShare.Exists())
{
CloudFileDirectory rootDir = _cloudFileShare.GetRootDirectoryReference();
CloudFileDirectory tempDir = rootDir.GetDirectoryReference("temp");
if (tempDir.Exists())
{
var saveTo = System.IO.Path.GetTempFileName();
var file = tempDir.GetFileReference("tmpA2DA.tmp");
file.DownloadToFile(saveTo, FileMode.Open);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11266 次 |
| 最近记录: |