如何使用Postman向Flask服务器发送图片?报错问题求助
解决Postman向Flask服务器上传图片的405/400错误问题
我来帮你搞定这个Postman上传Flask的问题,之前浏览器能用但Postman不行,大概率是路由请求方法配置不对,或者Postman的请求格式没设置正确,咱们一步步来排查解决:
1. 先检查Flask路由的请求方法配置
浏览器能正常访问/upload并上传,说明你的路由肯定处理了GET请求(用来返回上传页面),但很可能没正确配置POST请求的支持,或者路由拆分得有问题。
举个正确的路由写法,把GET和POST逻辑合并在同一个路由里:
from flask import Flask, render_template, request, jsonify app = Flask(__name__) @app.route('/upload', methods=['GET', 'POST']) # 必须同时指定GET和POST def upload_handler(): if request.method == 'GET': # 给浏览器返回上传页面 return render_template('upload.html') elif request.method == 'POST': # 处理Postman或浏览器的上传请求 # 第一步:检查请求里有没有文件 if 'file' not in request.files: return jsonify({"error": "请求里没包含文件部分"}), 400 file = request.files['file'] # 第二步:检查是否选了文件 if file.filename == '': return jsonify({"error": "没有选择要上传的文件"}), 400 # 第三步:保存文件(示例逻辑) if file: file.save(f"./uploads/{file.filename}") return jsonify({"message": f"文件 {file.filename} 上传成功"}), 200 # 其他请求方法直接返回405 return jsonify({"error": "不允许的请求方法"}), 405
如果你的路由只写了methods=['GET'],那Postman发POST请求就会直接报405;反之如果只写了methods=['POST'],浏览器访问GET会报错,但你说浏览器能用,所以重点确认路由是否同时支持GET和POST。
2. Postman的正确请求设置(关键!)
出现400错误,90%是Postman的请求格式没搞对,一定要按下面的步骤来:
- 请求方法选POST,URL填你的Flask服务地址,比如
http://localhost:5000/upload - 切换到Body标签,选择
form-data格式(这和浏览器表单上传的multipart/form-data一致,不能选raw、x-www-form-urlencoded这些) - 键名要和Flask代码里
request.files['xxx']的xxx完全一致,比如代码里是'file',Postman的Key就填file,然后把Type改成File,点击Value的选择文件按钮,选你要上传的图片 - 不要手动设置
Content-Type请求头!Postman会自动帮你生成正确的multipart/form-data头,手动设置反而容易出错
3. 额外调试技巧(如果还是有问题)
可以在Flask代码里加几行打印,看看请求的细节:
@app.route('/upload', methods=['GET', 'POST']) def upload_handler(): print(f"当前请求方法: {request.method}") print(f"请求里的文件列表: {request.files}") print(f"请求Content-Type: {request.content_type}") # 后续逻辑...
然后启动Flask看控制台输出,就能知道Postman的请求到底有没有正确携带文件,请求方法对不对。
常见坑点提醒
- 不要用
raw格式上传文件,必须用form-data - 键名要和代码里的对应,比如代码里是
'image',Postman就不能填'file' - 如果你的Flask启用了CSRF保护(比如用了Flask-WTF),浏览器会自动带CSRF令牌,但Postman需要手动在form-data里加
csrf_token键,值可以从浏览器上传页面的源码里复制 - 确保Flask的uploads文件夹存在,不然保存文件会报错
内容的提问来源于stack exchange,提问作者VPJ
相关产品推荐
相关产品推荐

