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中显示正确的大小,但当我下载文件时,我收到错误消息,文件已损坏。

你知道我做错了什么吗?

Azure文件存储-文件一旦上传就会损坏

文件损坏的原因是以下代码行:

cloudFile.UploadFromStreamAsync(fileStream);

本质上,你正在启动一个异步进程,但不等待它完成。要修复,您可以执行以下操作之一:

使用此方法的sync版本:

cloudFile.UploadFromStream(fileStream);

或者等待async方法完成(推荐):

await cloudFile.UploadFromStreamAsync(fileStream);

请注意,如果你使用async方法,你也需要使调用方法异步