我正在尝试使用CloudFileClient上传文件,但却遇到了奇怪的回应。我直接从SDK附带的Azure示例文件存储项目中获取了示例代码。
我的代码执行完全相同的步骤:
string connection = CloudConfigurationManager.GetSetting("AzureFileStorage");
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connection);
// Create a CloudFileClient object for credentialed access to File storage.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("documents");
await share.CreateIfNotExistsAsync();
// Get a reference to the root directory of the share.
CloudFileDirectory root = share.GetRootDirectoryReference();
// Put files in this user's folder
CloudFileDirectory dir = root.GetDirectoryReference(User.Identity.GetUserId());
await dir.CreateIfNotExistsAsync();
// Save the document to Azure File Storage
if (System.IO.File.Exists(model.DocumentPath))
{
CloudFile file = dir.GetFileReference(model.DocumentPath);
await file.UploadFromFileAsync(model.DocumentPath, FileMode.Open);
}
最后一行返回400错误请求。我在Azure门户网站上检查子目录是否成功完成,我可以通过azure门户手动上传文件,但是当我尝试示例代码并且我知道文件路径是好的时,异步调用总是给我一个黄色页面有400。
我没有使用日期时间,我的容器名称不以大写字母开头,我试图上传的文件只有几个K
CloudFile中的存储Uri是 StorageUri {Primary ='https://mydomain.file.core.windows.net/documents/ / C:%5Cdev%5Creadme.txt';次要=''}
答案 0 :(得分:0)
我认为问题出现在以下代码行中:
CloudFile file = dir.GetFileReference(model.DocumentPath);
为了测试一下,请将以下内容更改为:
CloudFile file = dir.GetFileReference("readme.txt");
基本上发生的事情是您将整个文件路径(C:\dev\readme.txt
)设置为Azure文件的名称,而不仅仅是readme.txt
,并且有一个:
字符未正确转义的Azure文件的名称。