无法将任何文件从html上传到烧瓶

时间:2017-01-24 12:35:31

标签: python flask

我创建了这个html:

app.module

所以我正在尝试从前端到后端上传数据。在后端,我正在使用此代码:

<!DOCTYPE html>
<html lang="en" xmlns:https="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Upload Test</title>
</head>
<body>
    <form action="http://localhost:8887/upload/" method="post">
        <label class="btn btn-default btn-file">Browse
            <input type="file" class="hidden"/>
        </label>
        <br>
        <input class="btn btn-default" type="submit">
    </form>
</body>
</html>

from flask import Flask from flask import request app = Flask(__name__) @app.route('/upload/', methods=['POST', 'GET']) def upload(): print(request.files) return 'hey' if __name__ == '__main__': app.run('0.0.0.0', 8887) 的结果始终为

print(request.files)

我无法理解我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

我本身没有flask开发人员,但正如@Craicerjack已经说过的那样,您需要进行表单上传:

  
      
  1. 标记标有enctype=multipart/form-data<input type=file>以该格式排列。
  2.   
  3. 应用程序从请求对象上的文件字典中访问该文件。
  4.   
  5. 使用文件的save()方法将文件永久保存在文件系统的某个位置。
  6.   

multipart/form-data会产生很大的不同,因为显式表示:

  1. 请求中会有不同的mime类型。

  2. 您的表单数据不应编码(如果内存提供其他值application/x-www-form-urlencodedtext/plain)。

  3. 为什么multipar/form-data?所以客户端(a.k.a浏览器)发送看起来像这样的多部分请求

    MIME-Version: 1.0
    Content-Type: multipart/form-data;
    boundary="----=_NextPart_000_0004_01D270B5.6F278C60"
    my_post_variable = value
    ------=_NextPart_000_0004_01D270B5.6F278C60
    Content-Type: octet-stream
    3434352345345341223423
    

    ,上传的文件位于------=_NextPart_000_0004_01D270B5.6F278C60

    之后

    现在,在完成所有解释之后,您应该将enctype=multipart/form-data添加到表单中,然后从路线中删除GET方法,这样就可以上传。