gpt4 book ai didi

c# - 在 Azure 中添加、编辑元数据

转载 作者:行者123 更新时间:2023-12-02 08:04:45 28 4
gpt4 key购买 nike

我最近在这里问了一个问题,感谢 Gaurav Mantri,我可以将元数据添加到 blob azure 。在 AzureBlobStorage 类中编辑后的我的代码:

  public void SaveMetaData(string fileName, string container, string key, string value)
{
var blob = GetBlobReference(fileName, container);
blob.FetchAttributes();
blob.Metadata.Add(key, value);
blob.SetMetadata();
}

我通过以下方式从 myController 调用它:

public JsonResult SaveMetaData(string name, string key, int id)
{
var uploadedFils = _FileStorage.GetUploadedFiles("images", id + "/");


if (!uploadedFils.Any())
_FileStorage.SaveMetaData(name, "images", key, "true");
foreach (var file in uploadedFils)
{
if (name == file.Name)
{
_FileStorage.SaveMetaData(FormatFileName(id, name), "images", key, "true");

}
else
{
_FileStorage.SaveMetaData(FormatFileName(id, file.Name), "images", key, "false");

}
}
return Json("");


}

获取上传文件的代码

public IEnumerable<Attachment> GetUploadedFiles(string container, string blobprefix)
{
if (string.IsNullOrWhiteSpace(container))
container = DefaultBlobContainer;

var storageAccount = CreateStorageAccountFromConnectionString(GetStorageConnectionString());
var blobContainer = GetBlobContainer(storageAccount, container);

var resultList = new List<Attachment>();
try
{
foreach (IListBlobItem item in blobContainer.ListBlobs(blobprefix, false))
{
var blob = (CloudBlockBlob) item;
var file = new Attachment
{
Name = blob.Name.Substring(blob.Name.LastIndexOf('/') + 1),
Size = blob.Properties.Length,
Extension = Path.GetExtension(blob.Name)
};
resultList.Add(file);
}
}
catch (Exception e)
{

}

return resultList;
}

当我单击想要设置为事件的所需图像时,我会调用此操作。第一次它可以工作,但我不知道如何编辑它以进行第二次单击,特别是这是我第一次处理 Azure?这行背后的逻辑是:当图库为空并且用户上传第一张图像时,该图像将自动设置为事件状态:

    if (!uploadedFils.Any())
_FileStorage.SaveMetaData(name, "images", key, "true");

最佳答案

根据您的描述,我检查了您的代码,您需要修改您的代码如下:

AzureBlobStorage 类下的

SaveMetaData 方法:

public void SaveMetaData(string fileName, string container, string key, string value)
{
var blob = GetBlobReference(fileName, container);
blob.FetchAttributes();
if (blob.Metadata.ContainsKey(key))
{
blob.Metadata[key] = value;
}
else
blob.Metadata.Add(key, value);
blob.SetMetadata();
}

根据您的情况,您的图像文件将上传到images\{id}\{filename}。在调用 Controller 下的 SaveMetaData 之前,您需要确保具有特定参数 nameid 的文件存在于您的 Blob 存储中。我假设您需要删除以下代码片段:

if (!uploadedFils.Any())
FileStorage.SaveMetaData(name, "images", key, "true");

注意:如果没有文件,则无法为其添加/更新元数据。此外,您只需为参数 fileName 设置 name 即可,无需组合 id。根据我的理解,SaveMetaData方法用于为现有文件设置元数据。我建议您将上述逻辑移至上传文件的操作中,并在没有文件的情况下设置默认元数据。

关于c# - 在 Azure 中添加、编辑元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46935088/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com