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

使用Python requests库上传图片失败求助:返回200但图片不显示

解决requests上传图片返回200但网页不显示的问题

以下是针对性的排查和解决步骤:

  • 补全有效Cookies
    你的cookies字典是空的,这大概率是核心问题。上传图片需要验证用户登录状态,服务器依赖Cookies识别会话。打开浏览器登录目标网站,通过开发者工具(F12 → 网络面板)找到上传请求,复制其中的Cookies(比如session_id、auth_token这类字段)填入代码的cookies字典中。

  • 完善files参数的格式
    服务器可能需要明确文件名和MIME类型才能正确处理文件。修改files定义,补充文件名和图片类型:

    files = {
        'file': (
            "heart-confetti-celebration-background_805687-804.jpg",
            open("heart-confetti-celebration-background_805687-804.jpg", 'rb'),
            'image/jpeg'
        )
    }
    
  • 检查响应内容的实际含义
    虽然返回200状态码,但服务器可能返回了失败信息或未完成处理。打印response.text后,仔细查看是否包含错误提示、图片未保存的原因,或者是否返回了正确的图片存储路径——如果路径无效,网页自然无法显示。

  • 移除不必要的请求头,避免冲突
    requests会自动为multipart/form-data请求生成正确的Content-Type头,手动设置的部分headers可能与自动生成的冲突。建议移除Sec-Ch-Ua、Sec-Fetch-*这类浏览器自动添加的头,只保留必要的User-Agent、Origin、Referer、X-Requested-With和Accept相关头。

  • 检查是否需要CSRF令牌
    部分网站会要求上传时携带CSRF令牌,这个令牌通常在上传页面的HTML中(比如隐藏的<input>标签,name为csrf_token或类似)。抓取页面源码提取令牌后,将其作为表单字段添加到请求中:

    data = {'csrf_token': '提取到的令牌值'}
    response = requests.post(url, headers=headers, files=files, cookies=cookies, data=data)
    
  • 对比浏览器抓包的请求细节
    用浏览器完成一次正常的图片上传,通过开发者工具抓取完整请求,对比你的代码中的请求头、表单字段、Cookies等所有参数,找出差异并修正——这是最有效的排查方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:52:49