Azure文件存储-文件一旦上传就会损坏
本文关键字:文件 损坏 存储 Azure | 更新日期: 2023-09-27 18:08:56
我有这个代码,我用它在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中显示正确的大小,但当我下载文件时,我收到错误消息,文件已损坏。
你知道我做错了什么吗?
文件损坏的原因是以下代码行:
cloudFile.UploadFromStreamAsync(fileStream);
本质上,你正在启动一个异步进程,但不等待它完成。要修复,您可以执行以下操作之一:
使用此方法的sync
版本:
cloudFile.UploadFromStream(fileStream);
或者等待async
方法完成(推荐):
await cloudFile.UploadFromStreamAsync(fileStream);
请注意,如果你使用async方法,你也需要使调用方法异步