You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python requests向LinkedIn上传文件?curl成功但Python上传失败

问题原因

你代码的错误出在误用了requests的files参数:
curl命令里的--upload-file是直接将文件的二进制内容作为PUT请求的原始请求体上传,而files参数是用来构造multipart/form-data格式的表单请求的,使用该参数时requests会自动覆盖你设置的Content-Type请求头,同时在请求体中加入表单边界、字段标识等额外内容,和LinkedIn接口要求的请求格式完全不匹配,因此上传失败。

正确实现代码

import requests

headers = {
    'Content-Type': 'application/octet-stream'
}

file_path = 'docs/short_video.mp4'
upload_url = 'https://api.linkedin.com/mediaUpload/C5400AQHpR1ANqMWqNA/uploadedVideo/0?ca=vector_feedshare&cn=uploads_secure&ccn=ambry-video&m=AQLEZ2pjh43pagYYYXRaCyztOykwDzluHkkYTbsMjNUzivrEOeObw9h3&app=1234&sync=1&v=beta&ut=1KeEm4JnMnJpo1'

# 用with上下文管理器自动处理文件关闭,避免资源泄漏
with open(file_path, 'rb') as f:
    # 直接将文件对象传给data参数即可实现和curl一致的二进制流上传
    resp = requests.put(upload_url, data=f, headers=headers)

# 可打印响应信息排查问题
print(f"响应状态码:{resp.status_code}")
print(f"响应内容:{resp.text}")

补充说明

  • 示例中的上传URL是LinkedIn生成的临时授权URL,每次上传视频前都需要重新调用接口获取,不要直接硬编码使用示例中的URL
  • 上述实现会自动采用流式上传,不会将整个视频文件一次性加载到内存,适合大体积视频上传场景

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:57:01