如何在Azure Function v2中获取Blob名称并存储到变量?
如何在Azure Function v2中获取Blob名称并存储到变量中?
问题场景
你在使用Azure Function v2的Blob触发器和Blob输入绑定时,尝试通过myblob.name获取Blob名称,但发现该值仅在控制台输出中有效,希望将Blob名称存储到变量中直接使用。现有代码如下:
@app.blob_trigger(arg_name="myblob", path="input/{name}",connection="AzureWebJobsStorage") @app.blob_input(arg_name="inputblob", path="input/{name}",connection="AzureWebJobsStorage") def main(myblob: func.InputStream,inputblob: str):
解决方案
有两种可靠方式可以获取并存储Blob名称:
方式1:利用绑定占位符直接注入参数
你在Blob绑定路径中已经定义了{name}占位符,Azure Functions会自动将该占位符对应的值作为参数注入到函数中,直接声明该参数即可使用:
@app.blob_trigger(arg_name="myblob", path="input/{name}", connection="AzureWebJobsStorage") @app.blob_input(arg_name="inputblob", path="input/{name}", connection="AzureWebJobsStorage") def main(myblob: func.InputStream, inputblob: str, name: str): # 将Blob名称存储到变量 blob_name = name # 后续可直接使用blob_name变量 print(f"当前处理的Blob名称:{blob_name}")
这种方式最直接,无需额外处理字符串,是官方推荐的用法。
方式2:从InputStream对象的name属性提取
如果需要从myblob对象中提取名称,可以通过分割完整路径的方式获取。myblob.name返回Blob的完整存储路径(例如input/test.txt),分割后取最后一段即可得到文件名:
@app.blob_trigger(arg_name="myblob", path="input/{name}", connection="AzureWebJobsStorage") @app.blob_input(arg_name="inputblob", path="input/{name}", connection="AzureWebJobsStorage") def main(myblob: func.InputStream, inputblob: str): # 分割路径提取Blob名称 blob_name = myblob.name.split('/')[-1] # 使用blob_name变量 print(f"当前处理的Blob名称:{blob_name}")
内容的提问来源于stack exchange,提问作者Jimmy3421
相关产品推荐
相关产品推荐

