falsk之文件上传

Posted sui776265233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了falsk之文件上传相关的知识,希望对你有一定的参考价值。

 

在使用flask定义路由完成文件上传时,定义upload视图函数

from flask import Flask, render_template
from werkzeug.utils import secure_filename
import os

app = Flask(__name__)
app.debug = True
app.secret_key = helloworld!!

@app.route(/)
def hello_world():
    return Hello World!

@app.route(/upload,methods=[GET,POST])
def upload():
    if request.method == POST:
        f = request.files[file]
        base_path = os.path.abspath(os.path.dirname(__file__))
        upload_path = os.path.join(base_path,staticuploads)
        f.save(upload_path,secure_filename(f.filename))
        return "文件上传成功!!"
    return render_template(upload.html)

@app.errorhandler(404)
def page_not_found(error):
    return render_template(404.html),404

if __name__ == __main__:
    app.run(debug=True)

upload.html前端页面的内容为

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<h1>文件上传示例</h1>
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传">
</form>
</body>
</html>

启动项目,用浏览器打开http://127.0.0.1:5000/upload页面,前端页面显示如图所示

技术分享图片

选择要上传的文件

技术分享图片

文件选择完毕后,点击上传,flask会抛出异常,提供没有权限

技术分享图片

修改upload视图函数

@app.route(/upload,methods=[GET,POST])
def upload():
    if request.method == POST:
        f = request.files[file]
        base_path = os.path.abspath(os.path.dirname(__file__))
        upload_path = os.path.join(base_path,staticuploads,secure_filename(f.filename))
        f.save(upload_path)
        return "文件上传成功!!"
    return render_template(upload.html)

再次进行文件上传,选中文件后,点击上传按钮,可以看到

技术分享图片

由此可以看出,文件已经成功上传,此时查看项目static/uploads目录,可以看到上传的图片已经保存在flask项目中了

技术分享图片

由此可以在Flask项目中完成文件上传功能!!

 

以上是关于falsk之文件上传的主要内容,如果未能解决你的问题,请参考以下文章

java Ftp上传创建多层文件的代码片段

Alamofire 文件上传出现错误“JSON 文本未以数组或对象开头,并且允许未设置片段的选项”

falsk 基础 语音识别与语音合成()

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

将存储在内存中的文件上传到s3

php之文件上传类代码