Flask - 缺少所需文件

问题描述

我正在玩 Python、Flask,我正在尝试创建一个可以接受文件的端点。 基本上我想上传一个随机的 .txt/.json 文件并将其保存在服务器上以供进一步处理。

我的问题

我按照 documentation 构建它。但是,没有像如何构建发布数据的请求这样的信息。 例如,使用 multipart/form-data 并使用表单上传,或将其作为二进制文件上传到正文中。无论如何,我在 Postman 中尝试了所有可能的方法,但没有一个有效,看起来文件只是没有到达服务器。能够将其作为二进制文件上传到请求正文中的最简单解决方案是什么?如果代码看起来不错,我应该在 postman 中配置什么才能上传文件

我的端点

class RawData(Resource):    
    parser = reqparse.RequestParser()
    parser.add_argument('file',type=werkzeug.datastructures.FileStorage,required=True,help="required file is missing",location='files')
    
    def post(self):
        data = RawData.parser.parse_args()
        file = data['file']
        filename = secure_filename(file.filename)
        file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
        return redirect(url_for('uploaded_file',filename=filename))

错误消息 - 邮递员 - HTTP 400

{
    "message": {
        "file": "required file is missing"
    }
}

enter image description here

enter image description here

解决方法

原来是 Postman 的问题。仍然没有弄清楚如何发布文件。 但是,CURL 派上用场并通过以下 cmd 解决了该问题:

curl -v -X POST -H "Content-Type: multipart/form-data" -F "file=@file.txt" http://localhost:5000/api/v1/rawdata/newfile