带有 python 和 flask 的 RESTful API 请求和读取文本文件

新手上路,请多包涵

我正在尝试使用烧瓶框架读取文本文件。这是我的代码

import os
from flask import Flask, request, redirect, url_for, flash,jsonify
from werkzeug.utils import secure_filename

app = Flask(__name__)

@app.route('/index', methods=['GET'])
def index():
    return 'Welcome'

@app.route('/getfile', methods=['POST'])
def getfile():
    file = request.files['file']
    with open(file,'r') as f:
        file_content = f.read()
    return jsonify(file_content)

if __name__ == '__main__':
    app.run(host = '0.0.0.0')

我正在使用 POSTMAN 检查它, 图片

不幸的是,它发送了错误的请求 400。我请求文件为 request.file 。 .txt 位于我的磁盘 C:/Users/rbby/Desktop/Programs/hello.txt

GET 方法工作正常。 POST 对我不起作用。我还应该从上面的代码中添加什么吗?

我提到了这个链接 Using Flask to load a txt file through the browser and access its data for processing Do I need to add these lines too?我不明白这些

filename = secure_filename(file.filename)

# os.path.join is used so that paths work in every operating system
file.save(os.path.join("wherever","you","want",filename))

原文由 Jonreyan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 603
2 个回答

假设您想要 POST /getfile 返回文本文件的内容,那么您可以简单地将 getfile() 函数定义为:

 def getfile():
    file = request.files['file']
    return file.read()

还要确保在 Postman 中将文件的密钥设置为 file (如下面的屏幕截图所示):

Postman 屏幕截图,密钥设置为文件

编辑: 请注意,上述方法只接受一个文件并返回其内容——它不接受 文件名 并返回其内容。

原文由 Ollie 发布,翻译遵循 CC BY-SA 3.0 许可协议

我想你想要的是将文件名传递给服务器并获取可能存储在服务器文件系统上的文件内容。

您不应从 --- 的 request file 属性获取文件名。它存储您上传的文件内容。

您应该只通过键值形式或 json 传递文件名。

 @app.route("/getfile", methods=["POST"])
def getfile():
    file_name = request.form["file_name"]
    with open(file_name, 'r') as f:
        file_content = f.read()
    return file_content

原文由 stamaimer 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题