You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用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的要求一致)
    • 值是一个三元组:
      1. 文件名:API会用这个名称识别文件,和本地文件名一致即可
      2. 文件对象:刚才打开的image_file
      3. MIME类型:根据图片格式调整——PNG用image/png,JPG/JPEG用image/jpeg,GIF用image/gif
  • 路径写法:Windows系统中,路径可以用正斜杠(/)或者双反斜杠(\\),避免单反斜杠的转义问题。

测试提示

替换代码中的LINE_ACCESS_TOKEN为你自己的有效令牌,确认图片路径正确后运行,就能同时发送文本和本地图片了。

内容的提问来源于stack exchange,提问作者ucode

火山引擎 最新活动