当前位置: 首页 > 知识库问答 >
问题:

Azure 函数 blob 存储文件名

申屠鹏
2023-03-14

当使用带有blob存储输出绑定的azure函数时,如何获得创建的blob的名称、路径或URL?一旦数据库保存了它,我就想把它保存到数据库中。

我使用的是Python,但任何示例都可以:

blob = open(os.environ['outputBlob'], 'wb')
blob.write(attachment.get_payload(decode=True))

print blob.name # this is not the correct name, but actually the temp file name I think

blob.close()

共有2个答案

傅啸
2023-03-14

看看Python脚本的进程空间中的环境变量。您应该有一个包含blob绑定路径的。

于正志
2023-03-14

对于 C#:如 https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob#input 中所述,您可以使用以下类型的 blob 绑定

下面是绑定json文件和代码的示例。我在http return中返回outputBlob.Uri以获取Blob的主要位置路径。

绑定:-

{
  "bindings": [
    {
      "authLevel": "function",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "blob",
      "name": "outputBlob",
      "path": "outcontainer/{rand-guid}",
      "connection": "AzureWebJobsDashboard",
      "direction": "inout"
    }
  ],
  "disabled": false
}

功能代码(C#):

#r "Microsoft.WindowsAzure.Storage"

using System.Net;
using Microsoft.WindowsAzure.Storage.Blob;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log,CloudBlockBlob outputBlob)
{
    log.Info("C# HTTP trigger function processed a request.");

    // parse query parameter
    string name = req.GetQueryNameValuePairs()
        .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
        .Value;

    if (name == null)
    {
        // Get request body
        dynamic data = await req.Content.ReadAsAsync<object>();
        name = data?.name;
    }



    return name == null
        ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
        : req.CreateResponse(HttpStatusCode.OK, "Hello " + outputBlob.Uri);
}
 类似资料:
  • 我试图通过Azure功能从Azure Blob存储中获取文件并在浏览器中显示它们。当我导航到url时,我可以设法下载文件,但我无法在浏览器中将它们显示为静态文件/图像。 我只想在浏览器中显示,而不是下载。 我尝试了一些sdk命令,但没有成功。以下是我尝试过的: 任何想法将不胜感激。谢谢!

  • 我相当愚蠢地上传了一个vhd到Azure文件存储,以为我可以从它创建一个虚拟机,却发现它真的需要在Blob存储中。 我知道我可以再上传一次,但它非常大,我的上传速度非常慢。 我的问题是-我可以将文件从文件存储移动到blob存储,而无需再次下载/上传吗?也就是说,Azure门户UI中是否有任何东西可以执行此操作,甚至是PowerShell命令?

  • 我有大约6个设置文件(xml或json ),我想存储在Azure中,但在我的Windows客户端应用程序中使用。我计划将它们存储在blob存储中,并使用以下代码下载它们: 设置文件不会经常更改。如何在本地缓存文件,以避免每次下载? 有更好的方法吗?我应该使用的其他Azure服务?

  • 我有一个通过System.Drawing动态生成的图像。然后,我将生成的图像输出到以存储到我的Azure blob中。 但我似乎无法将我的文件存储在我选择的blob中。没有发生错误,并且我的图像成功地保存到。不出所料,我的blob是空的。 到 但我会标记“Gaurav Mantri”的回应是正确的。如果不是他的洞察力,我的图像就不会上传到Blob上。

  • 我想通过运行在Azure VM上的FTP服务器与用户共享Azure Blob存储中的文件。 据我所知,您不能在VM上挂载Blob存储,但可以使用“网络使用”挂载Azure文件共享。 Blob存储上的文件将以增量方式上载,因此理想情况下,我希望在上载时将其复制到Azure文件,Azure功能似乎是理想的方式,因为它们很容易为我设置和处理Blob存储上的触发器。 我如何使用Azure功能将文件从Blo

  • 我正在尝试使用pyspark来分析我在数据砖笔记本上的数据。Blob 存储已装载到数据砖群集上,在分析后,希望将 csv 写回 blob 存储。由于 pyspark 以分布式方式工作,csv 文件被分解为小块并写入 Blob 存储。如何克服这个问题,并在我们使用pyspark进行分析时在blob上编写为单个csv文件。谢谢。

  • 我正在使用Azure Blob存储来上传/下载文件。问题是,如果我上传到azure blob中的任何新文件与已经上传的文件同名,那么它会自动覆盖以前上传的文件的内容。 null 因此,如果我上传一个名为“file1.docx”的新文件,它们有不同的内容。那么blob存储将替换以前上传的file1.docx。所以在这种情况下,我丢失了以前上传的文件。 blob存储有什么方法可以自动检测到有重复,这样

  • Azure函数存储帐户Blob容器触发器 在我们的一个用例中,我正在为具有以下条件的存储帐户容器中的任何活动寻找Azure函数触发器 < li >具有特定命名约定的容器(名称如xxxx-input) < li >它应该自动检测是否创建了新的容器(具有特定的命名约定) < li>