如何从Logic App及Azure门户Code+Test界面向Azure Function传递两个CSV与字符串?
Azure Function接收multipart/form-data的测试与Logic App调用解决方案
一、Azure门户Code + Test界面测试方法
Azure门户的Code + Test默认测试面板不支持可视化上传文件,需通过Raw模式构造multipart/form-data请求:
- 进入目标Function的Code + Test界面,点击「Test/Run」打开测试面板
- 切换到Raw标签页,设置HTTP方法为
POST - 在Headers区域添加请求头:
(Content-Type: multipart/form-data; boundary=----CustomBoundary123----CustomBoundary123可自定义,需与请求体中的边界标识一致) - 在Body区域构造表单内容,替换占位内容后直接粘贴:
----CustomBoundary123 Content-Disposition: form-data; name="file1"; filename="file1.csv" Content-Type: text/csv [粘贴file1.csv的完整文本内容] ----CustomBoundary123 Content-Disposition: form-data; name="file2"; filename="file2.csv" Content-Type: text/csv [粘贴file2.csv的完整文本内容] ----CustomBoundary123 Content-Disposition: form-data; name="stringDate" 2024-05-20 ----CustomBoundary123-- - 点击「Run」执行测试,即可正确传递文件和日期参数。
二、Logic App中构造HTTP动作的正确方式
Logic App的HTTP动作支持可视化配置multipart/form-data表单,无需手动拼接内容:
- 添加HTTP动作,设置Method为
POST,URL填写你的Function触发地址(需包含code参数) - 切换到Body标签页,选择form-data格式
- 依次添加三个表单项:
- 项1:名称填
file1,类型选File,值选择@{body('Create_CSV_Table')}(对应第一个CSV表的输出),文件名设为file1.csv,Content-Type设为text/csv - 项2:名称填
file2,类型选File,值选择对应第二个CSV表的输出,文件名设为file2.csv,Content-Type设为text/csv - 项3:名称填
stringDate,类型选Text,值填写目标日期字符串(可使用表达式如@{utcNow('yyyy-MM-dd')}或固定值)
- 项1:名称填
- 无需手动设置
Content-Type,Logic App会自动生成符合规范的multipart/form-data请求头和边界标识。
三、Function代码适配建议
你的现有代码是读取表单字符串字段,但multipart/form-data中的文件应为文件流对象,需调整代码以正确读取:
var form = await req.ReadFormAsync(); // 读取文件流 var file1 = form.Files["file1"]; var file2 = form.Files["file2"]; // 读取日期字符串 var stringDate = form["stringDate"].ToString(); // 示例:读取CSV文件内容 if (file1 != null && file1.Length > 0) { using (var streamReader = new StreamReader(file1.OpenReadStream())) { var file1Content = await streamReader.ReadToEndAsync(); // 处理CSV内容 } }
此前Postman测试正常可能是因为你将文件转为Base64字符串传递,但Code + Test和Logic App默认以文件流方式传递,因此需适配文件流读取逻辑。
内容的提问来源于stack exchange,提问作者abujafar
相关产品推荐
相关产品推荐

