![](/img/trans.png)
[英]C# Azure Storage - How to Upload a File to an already Existing Container
[英]C# Google Storage Client - Upload file - Fail if already exists
我正在使用谷歌存储 c# 客户端。 我正在将文件上传到特定位置。
示例代码:
private void UploadFile(string bucketName, string localPath,
string objectName = null)
{
var storage = StorageClient.Create();
using (var f = File.OpenRead(localPath))
{
objectName = objectName ?? Path.GetFileName(localPath);
storage.UploadObject(bucketName, objectName, null, f);
Console.WriteLine($"Uploaded {objectName}.");
}
}
将文件多次上传到同一位置时,新版本会覆盖旧版本。
我希望上传失败并抛出异常(因为文件已经存在)。 我怎样才能做到这一点?
注意:显而易见的解决方案是在上传之前检查文件是否存在,但这并不涵盖我的竞争条件。
您可以使用ifGenerationMatch(0)
防止覆盖:
https://cloud.google.com/storage/docs/json_api/v1/objects/insert#parameters
我不是 C# 专家,但我认为在 C# 中,这可以通过UploadObjectOptions
:
具体来说:
因为它描述了一个水桶云存储自动覆盖现有对象这里
“如果您上传与 Cloud Storage 存储桶中现有对象同名的文件,现有对象将被覆盖。要保留旧版本的对象,请启用对象版本控制。”
作为替代方案,我认为您可以检查对象是否存在以获取元数据。 这个其他 Stackoverflow 问题可以帮助您作为参考, 这个其他 GCP 文档向您展示如何使用 C# 实现它。
private void GetMetadata(string bucketName, string objectName)
{
var storage = StorageClient.Create();
var storageObject = storage.GetObject(bucketName, objectName);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.