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

如何使用cURL在Flask RESTful中上传文件?附已编写的Resource代码

用cURL上传文件到你的Flask RESTful接口

嘿,我来帮你搞定这个文件上传的事儿!首先咱们先把你的FileUpload资源类里的小问题修正下,再给你对应的cURL命令。

第一步:修正参数解析的Location

看你代码里的reqparse配置,location参数写得有点问题,这会导致参数解析失败。咱们调整一下:

parse = reqparse.RequestParser()
# 文件参数要从files里取,对应multipart/form-data里的文件字段
parse.add_argument('user_file', type=FileStorage, location='files', required=True)
# user_id是普通表单参数,从form里取
parse.add_argument('user_id', type=int, location='form', required=True)
args = parse.parse_args()

这样调整后,Flask才能正确识别你用cURL发送的文件和ID参数。

第二步:cURL上传命令

假设你的API端点注册的是/upload,本地运行地址是http://localhost:5000,那对应的cURL命令是这样的:

curl -X POST -F "user_file=@/绝对路径/到你的/测试文件.png" -F "user_id=456" http://localhost:5000/upload

我给你拆解下每个部分:

  • -X POST:明确告诉服务器这是POST请求
  • -F "user_file=@/xxx/xxx.file":@后面跟着你本地要上传的文件的绝对路径,这个字段名user_file要和你接口里的参数名完全一致
  • -F "user_id=456":传递你的用户ID,这里直接写整数就行,reqparse会自动帮你转成int类型
  • 最后是你的API端点URL,记得替换成你实际部署的地址

额外注意点

  • 确保你已经把FileUpload资源正确注册到Flask API里了,比如:
    from flask import Flask
    from flask_restful import Api
    from your_file import FileUpload
    
    app = Flask(__name__)
    api = Api(app)
    # 注册路由,这里的/upload就是你要访问的端点
    api.add_resource(FileUpload, '/upload')
    
    if __name__ == '__main__':
        app.run(debug=True)
    
  • 如果你在post方法里处理文件(比如上传到S3),记得用secure_filename()处理文件名,避免安全问题,就像你代码里写的那样~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:04:47