• flask完成文件上传功能


    在使用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项目中完成文件上传功能!!

  • 相关阅读:
    网易163邮箱被盗号找回经历
    C++中基类的析构函数为什么要用virtual虚析构函数
    像linux ls命令一样优雅地打印
    【Linux】- 六个超赞的字符画生成器
    linux欢迎界面 /etc/motd
    Linux 的 FIGlet 指令产生 ASCII Art 大型文字教学
    趣玩 Linux:四个生成字符图案(字符画)的命令
    案例参考手册-第四章 Curses字符界面.docx
    读取键盘输入流改为原始模式
    centos 7配置系统调度isolcpus(软中断绑定)
  • 原文地址:https://www.cnblogs.com/renpingsheng/p/9033394.html
Copyright © 2020-2023  润新知