【问题标题】:POST request to flask server for automated testing. 400 Bad Request, KeyError 'files'POST 请求到烧瓶服务器进行自动化测试。 400 错误请求,KeyError 'files'
【发布时间】:2020-04-16 14:06:55
【问题描述】:

我正在尝试创建一个名为 /automated_testing 的端点。该端点将 接收一个自动 POST 请求,该请求将是一个包含一些字符串的 .txt 文件。我想读取这些字符串并对其执行一些操作。

我收到错误:

引发异常。BadRequestKeyError(key) werkzeug.exceptions.BadRequestKeyError:400 错误请求:浏览器(或代理)发送了此服务器无法理解的请求。 KeyError:“文件”

我正在使用下面的代码发送一个我从单独的脚本触发的请求。

import requests

with open('test.txt', 'rb') as f:
    r = requests.post('http://127.0.0.1:5000/automated_testing', files={'test.txt': f})

烧瓶服务器的代码

@app.route('/automated_testing', methods=['GET','POST'])
def getfile():
    if request.method == 'POST':
        file = request.files['files']
        a = ""
        with open(file,'r') as f:
            file_content = f.read()
            a+=file_content
        return a    
    else:
        return "GET REQ"

    return "Hi"

test.txt的内容

Hi
hello

我知道错误指示 ['files'] 但我无法解决问题。是我发送 post 请求的方式错误还是烧瓶服务器?

【问题讨论】:

    标签: python post flask request keyerror


    【解决方案1】:

    试试

     file = request.files['text.txt']
    

    或遍历所有发送的文件:

        for file in request.files:
            #do_stuff
    

    【讨论】:

    • 这确实返回了一个 FileStorage 对象!但是有没有别的办法。问题是我不知道要发送测试的文件名?
    • 你可以遍历request.files中的所有键值对,我会用一个例子来编辑我上面的帖子
    猜你喜欢
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多