Azure 文件存储 - 文件在上传后损坏
Azure File Storage - File is corrupted once uploaded
我有这段代码,用于在 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)
{
}
文件已正确上传,并且以天蓝色显示了正确的大小,但是当我下载文件时,我收到文件已损坏的错误消息。
知道我做错了什么吗?
您的文件损坏的原因是以下代码行:
cloudFile.UploadFromStreamAsync(fileStream);
本质上,您是在启动一个异步进程,而不是等待它完成。要修复,您可以执行以下任一操作:
使用此方法的 sync
版本:
cloudFile.UploadFromStream(fileStream);
或者,等待 async
方法完成(推荐):
await cloudFile.UploadFromStreamAsync(fileStream);
请注意,如果您使用异步方法,则还需要将调用方法设为异步。
我有这段代码,用于在 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)
{
}
文件已正确上传,并且以天蓝色显示了正确的大小,但是当我下载文件时,我收到文件已损坏的错误消息。
知道我做错了什么吗?
您的文件损坏的原因是以下代码行:
cloudFile.UploadFromStreamAsync(fileStream);
本质上,您是在启动一个异步进程,而不是等待它完成。要修复,您可以执行以下任一操作:
使用此方法的 sync
版本:
cloudFile.UploadFromStream(fileStream);
或者,等待 async
方法完成(推荐):
await cloudFile.UploadFromStreamAsync(fileStream);
请注意,如果您使用异步方法,则还需要将调用方法设为异步。