azure 函数: set blob filename from http request

标签 azure azure-blob-storage azure-functions

我正在尝试设置一个 Azure 函数来将 Blob 从 HTTP 请求上传到 Blob。

我能够使用以下命令上传具有静态文件名的文件:

public static class Uploader
{
    [FunctionName("Uploader")]
    public static IActionResult Run(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]HttpRequest req,
    [Blob("hello/uploaded.jpg", FileAccess.Write)]Stream writer,
    TraceWriter log
    )
        {
            log.Info("trigger for image upload started...");
            if (!req.ContentType.Contains("multipart/form-data") || (req.Form.Files?.Count ?? 0) == 0)
            {
                log.Warning("no images found on upload attempt");
                return new BadRequestResult();
            }
            foreach (var file in req.Form.Files)
                file.CopyTo(writer.);

            return new OkObjectResult("Done!");
        }
}

有什么方法可以将 Blob("hello/uploaded.jpg") 更改为 Blob("hello/{fileName}" 来获取名称动态 HTTP 请求。我不介意它是来自头部还是主体。我试图不只针对动态文件名使用整个 GetBlockBlobReference 过程。

更新 我不确定我是否遗漏了一些东西或者以错误的方式看待这个问题。对于使用 Blob 存储的无服务器设置,HTTP 上传不应该是一个明显且常见的场景吗?怎么没有这方面的例子呢?

最佳答案

@RomanKiss 建议的选项应该有效。或者,如果您愿意,可以将文件名放入函数 URL 模板中:

[FunctionName("Uploader")]
public static IActionResult Run(
  [HttpTrigger(AuthorizationLevel.Function, "post", Route = "uploader/{filename}")] 
  HttpRequest req,
  string filename,
  [Blob("hello/{filename}", FileAccess.Write)] Stream writer,
  TraceWriter log)
{
   //...
}

关于 azure 函数: set blob filename from http request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49440300/

相关文章:

.net - 错误请求。,Source=Microsoft.WindowsAzure.Storage,StorageExtendedMessage=不支持 block blob

azure - 是否可以自定义存储帐户中的 blob 在创建 blob 时触发的事件?

asp.net - 在 ASP.net 中读取 Azure AD 登录用户详细信息

python - 将流数据从 Azure Blob 存储读取到 Databricks 中

azure - Azure Function 中没有从表到 ITableEntity 的隐式引用转换

azure - 完成所有依赖管道 yaml 后触发管道

特定表的 Azure SAS token

azure - 关于如何检查 Azure Blob 存储是否存在病毒有什么想法吗?

c# - 在Azure功能中使用appsettings

azure - 队列触发的 Azure 函数是否会触发较旧的队列消息?