PYTHON FLASK - request.files 显示为文件未找到,即使它存在

Posted

技术标签:

【中文标题】PYTHON FLASK - request.files 显示为文件未找到,即使它存在【英文标题】:PYTHON FLASK - request.files displays as file not found eventhough it exits 【发布时间】:2021-05-17 07:34:25 【问题描述】:

我正在尝试通过将正文中的 uploadFile 作为表单数据传递来触发邮递员的外部 api。下面的代码给我一个错误,因为'FileNotFoundError:[Errno 2]没有这样的文件或目录:'

注意:在邮递员中,uploadFile 从我的本地桌面获取文件作为输入。还修改了邮递员设置以允许访问工作目录以外的文件

任何帮助都将不胜感激。

以下是代码:

@app.route('/upload', methods=['POST'])  
@auth.login_required   
def post_upload():   
    payload = 
    'table_name': 'incident', 'table_sys_id': request.form['table_sys_id']
      
    files = 'file': (request.files['uploadFile'], open(request.files['uploadFile'].filename,
'rb'),'image/jpg', 'Expires': '0') 
    response = requests.post(url, headers=headers,  files=files, data=payload)   
    return jsonify("Success- Attachment uploaded successfully ", 200)   

【问题讨论】:

有人可以帮忙吗?真的被这个问题困住了。 请在请求和响应正文中发布邮递员请求的屏幕截图和日志。 你定义了UPLOAD_FOLDER 吗?请看:flask.palletsprojects.com/en/latest/patterns/fileuploads/… 非常感谢。我通过创建一个文件夹并在上传文件之前保存文件解决了这个问题。截至目前,我将正文中的属性(上传文件)作为表单数据传递,这可以作为原始 json 传递吗? 【参考方案1】:

下面的代码给我一个错误,因为'FileNotFoundError:[Errno 2]没有这样的文件或目录:

你定义了UPLOAD_FOLDER 吗?请看:https://flask.palletsprojects.com/en/latest/patterns/fileuploads/#a-gentle-introduction

我将 body 中的属性(上传文件)作为表单数据传递,可以将其作为原始 json 传递

您不能使用 JSON 上传文件。但是实现此目的的一种hacky 方法是在发送文件之前对文件进行base64 (useful reference) 编码。这样您就不会上传文件,而是发送以 base64 格式编码的文件内容。

服务器端:

import base64
file_content = base64.b64decode(request.data['file_buffer_b64'])

客户端:

-> javascript

const response = await axios.post(uri, file_buffer_b64: window.btoa(file))

-> Python:

import base64
with open(request.data['uploadFile'], "rb") as myfile:
    encoded_string = base64.b64encode(myfile.read())
payload = "file_buffer_b64": encoded_string
response = requests.post(url, data=payload)

【讨论】:

以上是关于PYTHON FLASK - request.files 显示为文件未找到,即使它存在的主要内容,如果未能解决你的问题,请参考以下文章

python中flask框架 怎么选择文件

python flask怎么指定端口启动

python Python Flask WSGI路由技术#python #flask #wsgi

python Python Flask WSGI路由技术#python #flask #wsgi

python常用框架之一 Flask 初识Flask

python flask 基础入门