Flask - 缺少所需的文件
Flask - required file is missing
我正在玩 Python,Flask 并且我正在尝试创建一个可以接受文件的端点。
基本上我想上传一个随机的 .txt/.json 文件并将其保存在服务器上以供进一步处理。
我的问题
我按照 documentation 来构建它。但是,那里没有关于如何构建对 post 数据的请求的信息。
例如使用 multipart/form-data 并使用表单上传,或者将其作为二进制文件上传到正文中。无论如何,我在 Postman 中尝试了所有可能的方法,其中 none 有效,看起来文件没有到达服务器。能够将其作为二进制文件上传到请求正文中的最简单解决方案是什么?如果代码看起来不错,我应该在 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))
错误消息 - Postman - HTTP 400
{
"message": {
"file": "Required file is missing"
}
}
原来是Postman的问题。仍然没有弄清楚如何 post 文件。
然而,CURL 派上用场并使用以下命令解决了问题:
curl -v -X POST -H "Content-Type: multipart/form-data" -F "file=@file.txt" http://localhost:5000/api/v1/rawdata/newfile
我正在玩 Python,Flask 并且我正在尝试创建一个可以接受文件的端点。 基本上我想上传一个随机的 .txt/.json 文件并将其保存在服务器上以供进一步处理。
我的问题
我按照 documentation 来构建它。但是,那里没有关于如何构建对 post 数据的请求的信息。 例如使用 multipart/form-data 并使用表单上传,或者将其作为二进制文件上传到正文中。无论如何,我在 Postman 中尝试了所有可能的方法,其中 none 有效,看起来文件没有到达服务器。能够将其作为二进制文件上传到请求正文中的最简单解决方案是什么?如果代码看起来不错,我应该在 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))
错误消息 - Postman - HTTP 400
{
"message": {
"file": "Required file is missing"
}
}
原来是Postman的问题。仍然没有弄清楚如何 post 文件。 然而,CURL 派上用场并使用以下命令解决了问题:
curl -v -X POST -H "Content-Type: multipart/form-data" -F "file=@file.txt" http://localhost:5000/api/v1/rawdata/newfile