如何使用LINE Notify发送本地图片?现有代码仅发文本求助
解决LINE Notify发送本地图片的问题
我来帮你搞定这个问题!你现在的代码没法发送本地图片,核心原因是LINE Notify API要求发送本地文件时必须用multipart/form-data格式上传文件内容,而不是把文件路径直接塞到data参数里——你之前的写法只是把路径当文本传了,并没有实际上传图片文件本身。
问题根源拆解
你的原代码里,data = ({ 'message':"Test Image", 'imageFile':'C://../main@2x.png' })这一行是错误的:imageFile参数需要接收的是二进制文件对象,而不是字符串格式的文件路径。
修改后的完整代码
import requests # 替换成你自己的LINE Notify令牌 LINE_ACCESS_TOKEN = "LINE_ACCESS_TOKEN" url = "https://notify-api.line.me/api/notify" # 1. 配置请求头 LINE_HEADERS = {"Authorization": "Bearer " + LINE_ACCESS_TOKEN} # 2. 准备消息文本 data = {'message': "Test Image"} # 3. 处理本地图片文件 # 注意:替换成你实际的图片路径,Windows路径可以用正斜杠或双反斜杠 with open('C:/your/actual/path/main@2x.png', 'rb') as image_file: # 4. 配置文件上传参数(必须用files字段) # 格式:{参数名: (文件名, 文件对象, MIME类型)} files = {'imageFile': ('main@2x.png', image_file, 'image/png')} # 5. 发送POST请求,同时传递文本和文件 session = requests.Session() r = session.post(url, headers=LINE_HEADERS, data=data, files=files) print(r.text)
关键细节说明
- 二进制读取文件:用
'rb'模式打开图片,确保读取的是图片的二进制原始数据,这是文件上传的必要前提。 - files参数格式:
- 键名必须是
imageFile(和LINE Notify API的要求一致) - 值是一个三元组:
- 文件名:API会用这个名称识别文件,和本地文件名一致即可
- 文件对象:刚才打开的
image_file - MIME类型:根据图片格式调整——PNG用
image/png,JPG/JPEG用image/jpeg,GIF用image/gif
- 键名必须是
- 路径写法:Windows系统中,路径可以用正斜杠(
/)或者双反斜杠(\\),避免单反斜杠的转义问题。
测试提示
替换代码中的LINE_ACCESS_TOKEN为你自己的有效令牌,确认图片路径正确后运行,就能同时发送文本和本地图片了。
内容的提问来源于stack exchange,提问作者ucode




