如果更改,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;
};
我正在使用 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;
};