RESTful API 使用 python 和 flask 来请求和读取文本文件

RESTful API with python and flask to request and read a text file

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

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 对我不起作用。我还应该从上面的代码中添加什么吗?

我提到了这个 link 我也需要添加这些行吗?我不明白这些

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))

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

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

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

编辑: 请注意,上述方法只需要一个文件和 return 其内容 - 它不需要 filename,以及 return 其内容。

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

您不应该从 requestfile 属性中获取文件名。它存储您上传的文件内容。

您应该只通过 key-value 表单或 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

下面的代码可以工作。已使用 Get here :

 from flask import Flask

app = Flask(__name__)

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

@app.route("/getfile", methods=['GET'])
def getfile():
    with open("name of file", "r+") as f:
        data=f.read()
    return data



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