如果更改,Azure UploadDirectoryAsync 不会覆盖现有文件

Azure UploadDirectoryAsync doesn't overwrite existing files if changed

我正在使用 Microsoft.WindowsAzure.Storage.DataMovement 库进行目录上传,如下所示

     TransferManager.Configurations.ParallelOperations = 64;

         UploadDirectoryOptions options = new UploadDirectoryOptions()
                    {                              
                        ContentType = "image/jpeg",
                        Recursive = true,                   

                    };


    context.FileTransferred += FileTransferredCallback;
    context.FileFailed += FileFailedCallback;
    context.FileSkipped += FileSkippedCallback;


    await TransferManager.UploadDirectoryAsync(sourceDir, destDir, options:
 options, context: context, cancellationToken: cts.Token);

我认识到,如果我更改同名图像,函数将忽略该图像并且 returns 异常,因为文件存在。如果 datemodified 更改,如何替换图像?首先,我本地电脑上的 datemodified 和 azure 应该同步。

我刚发现 Microsoft.WindowsAzure.Storage.DataMovement 软件包有新的更新,我安装了 0.4.1 版本。看起来它公开了新的方法和事件。 我不确定这是否在 0.3 版(我以前的版本)中可用,但我是在安装 0.4.1 版 Microsoft.WindowsAzure.Storage.DataMovement 包后才知道的。下面的代码将比较源和目标并决定是否应该覆盖。我希望它能帮助其他遇到同样问题的人。

context.ShouldOverwriteCallback = (source, destination) =>
{
    var sourceFile = new FileInfo((string)source);
    var destBlob = destination as CloudBlob;
    return sourceFile.LastWriteTimeUtc > destBlob.Properties.LastModified;
};