黄玉

附件上传到一些文件接口时附件名乱码情况处理(适用于企微文件上传接口等)

黄玉Lv.2入道 发布于 分享
0 回复1376 浏览
最近有不止一个客户遇到问题,使用工作流的 API 节点上传附件到一些接口文件,结果上传后文件名变成了乱码一样的东西,用企微文件上传接口举个栗子: 接口说明: [图片] 在工作流中使用 API 上传附件: [图片] 图里可以看到,form-data 中媒体文件标识,应包含 filename、filelength、content-type 等信息 ,但是直接上传附件时,不知道为什么读不到 filename(暂时没搞明白是为什么,有其他小伙伴知道的话可以补充一下) , 导致对端接口在接收到附件时文件名变成了一堆看不懂的乱码。这里猜测可能是被服务端自动重命名了,生成了一个唯一文件名(类似于 UUID 随机字符串的东西) .那咋办呢,可以用代码块~ 逻辑很简单,先将附件处理成可下载的 URL 和转码文件名 , 将 URL 和文件名按照接口规范构建请求体,然后请求接口即可 第一步:获取附件的 URL 和文件名 方式参考这篇文章 https://bbs.mingdao.net/topic/7705 注意注意, 这篇文章里的代码块是 JS ,并且是一次性获取了多个附件的 URL 和文件名,所以接下来用子流程来一一处理(或者第二步代码中用循环的方式) 第二步:获取到 URL 和文件名后,用 python 代码块 上传附件。如图,代码在最后(这是企微文件上传接口,实际根据需求替换) [图片] [图片] [图片] 示例代码: file_url = input["file_url"] file_name = input["file_name"] # 请求的key和type参数 key = "XXXXXXX" file_type = "file" # 通过链接获取文件内容 response = requests.get(file_url) file_content = response.content # 构造上传请求的url upload_url = f"https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key={key}&type={file_type}" # 上传文件 files = { 'media': (file_name, file_content, 'application/octet-stream') } # 发起POST请求上传文件 response = requests.post(upload_url, files=files) # 解析并打印响应内容 response_json = response.json() # 输出返回结果 output = {"response": response_json}