zoukankan      html  css  js  c++  java
  • Flask-uploads 简单使用

    pip install flask-uploads

    #
    先导入次此处需要用到的库: from flask_uploads import UploadSet, IMAGES, configure_uploads, ALL,patch_request_class from flask import request, Flask, redirect, url_for, render_template,abort import os #生成 app app = Flask(__name__) # 配置文件上传到的路径,以及限制上传文件的类型 app.config['UPLOADED_PHOTO_DEST'] = os.path.dirname(os.path.abspath(__file__)) app.config['UPLOADED_PHOTO_ALLOW'] = IMAGES # 实例化 UploadSet 对象 photos = UploadSet('PHOTO') # 将 app 的 config 配置注册到 UploadSet 实例 photos configure_uploads(app, photos) # 设置上传图片大小 #patch_request_class(app, 32 * 1024 * 1024) # 生成一个 upload 的路由 @app.route('/upload', methods=['POST', 'GET']) def upload(): if request.method == 'POST' and 'photo' in request.files: filename = photos.save(request.files['photo']) return redirect(url_for('show', name=filename)) return render_template('upload.html') # 生成一个 show 的路由 @app.route('/photo/<name>') def show(name): if name is None: abort(404) url = photos.url(name) return render_template('show.html', url=url, name=name) if __name__ == '__main__': app.run ()

    upload.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form method=POST enctype=multipart/form-data action="{{ url_for('upload') }}">
        <input type=file name=photo>
        <input type=submit>
    </form>
    
    </body>
    </html>

    show.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <img src="{{ url }}"/>
    </body>
    </html>

    文件上传

    HTML 表单中设置 enctype="multipart/form-data" 属性,已上传的文件被储存在内存或文件系统的临时位置。你可以通过请求对象 files 属性来访问上传的文件。每个上传的文件都储存在这个 字典型属性中。这个属性基本和标准 Python file 对象一样,另外多出一个用于把上传文件保存到服务器的文件系统中的 save() 方法。

    from flask import request
    
    @app.route('/upload', methods=['GET', 'POST'])
    def upload_file():
        if request.method == 'POST':
            f = request.files['the_file']
            f.save('/var/www/uploads/uploaded_file.txt')

    如果想要知道文件上传之前其在客户端系统中的名称,可以使用 filename 属性。但是请牢记这个值是 可以伪造的,永远不要信任这个值。如果想要把客户端的文件名作为服务器上的文件名, 可以通过 Werkzeug 提供的 secure_filename()函数:

    from flask import request
    from werkzeug.utils import secure_filename
    
    @app.route('/upload', methods=['GET', 'POST'])
    def upload_file():
        if request.method == 'POST':
            f = request.files['the_file']
            f.save('/var/www/uploads/' + secure_filename(f.filename))
  • 相关阅读:
    mysql 8 查询报错(sql_mode=only_full_group_by)
    docker安装mysql8版本后 客户端连接出现client does not support authentication...
    docker常用命令
    查看tomcat日志相关Linux命令
    java项目部署到linux服务器涉及的命令
    ehcache与redis对比
    JS中调用BigDecimal处理金额
    thymeleaf模板 th:href 踩坑
    汇总一些绝对有价值的解决方案,边学习边收集
    spring注解总结,spring注解大全
  • 原文地址:https://www.cnblogs.com/Erick-L/p/7002196.html
Copyright © 2011-2022 走看看