【发布时间】:2016-09-27 10:10:17
【问题描述】:
我有这段代码,用于在 azure 文件存储容器中上传文件。
var originalFileName = GetDeserializedFileName(result.FileData.First());
var uploadedFileInfo = new FileInfo(result.FileData.First().LocalFileName);
var uploadFolder = "/AzureDocuments" + '/' + correctLoanId ;
var patString = HttpContext.Current.Server.MapPath(uploadFolder) + "/" + originalFileName;
if(!Directory.Exists(HttpContext.Current.Server.MapPath(uploadFolder)))
{
Directory.CreateDirectory(HttpContext.Current.Server.MapPath(uploadFolder + '/' + correctLoanId));
}
if (!File.Exists(patString))
{
File.Copy(uploadedFileInfo.FullName, patString);
}
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
CloudFileShare share = fileClient.GetShareReference("documents");
CloudFileDirectory rootDir = share.GetRootDirectoryReference();
CloudFileDirectory sampleDir = rootDir.GetDirectoryReference(correctLoanId);
sampleDir.CreateIfNotExists();
CloudFile cloudFile = sampleDir.GetFileReference(originalFileName);
try
{
//Open a stream from a local file.
Stream fileStream = File.OpenRead(patString);
cloudFile.UploadFromStreamAsync(fileStream);
fileStream.Dispose();
}
catch (Exception ex)
{
}
文件已正确上传,正确的大小以 azure 显示,但是当我下载文件时,我收到文件已损坏的错误消息。
知道我做错了什么吗?
【问题讨论】:
-
你是如何下载文件的?使用 SAS 还是以编程方式下载?
-
我正在尝试直接从 azure 门户和通过使用 azure 权限创建的链接但两种方式的输出相同
-
只是好奇....你为什么不等待这个电话 -
cloudFile.UploadFromStreamAsync(fileStream);?不应该是await cloudFile.UploadFromStreamAsync(fileStream);吗? -
我会改变的。你认为这会改变事情吗?谢谢
-
我会这么认为。相反,请尝试执行类似
cloudFile.UploadFromStream(fileStream);的操作,即将其更改为同步方法而不是异步。看看有没有帮助。
标签: c# azure azure-storage azure-sdk-.net azure-files