我有这个代码,我用它来上传天文件存储容器中的文件。
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显示,但是当我下载文件时,我收到错误消息,指出该文件已损坏。
我知道我做错了什么吗?
答案 0 :(得分:1)
您的文件损坏的原因是由于以下代码行:
cloudFile.UploadFromStreamAsync(fileStream);
基本上你是在启动一个异步过程但不等待它完成。要修复,您可以执行以下任一操作:
使用此方法的sync
版本:
cloudFile.UploadFromStream(fileStream);
或者,等待async
方法完成(推荐):
await cloudFile.UploadFromStreamAsync(fileStream);
请注意,如果您使用的是异步方法,则还需要将调用方法设置为异步。