zoukankan      html  css  js  c++  java
  • Flask——实现上传功能

    1.实例

    #!-*-coding=utf-8-*-
    # from flask import Flask
    #
    # app = Flask(__name__)
    #
    #
    # @app.route('/')
    # def hello_world():
    #     return 'Hello World!'
    #
    #
    # if __name__ == '__main__':
    #     app.run()
    
    from werkzeug.utils import secure_filename
    from flask import Flask,render_template,jsonify,request,send_from_directory
    import time
    import os
    import base64
    
    app = Flask(__name__)
    UPLOAD_FOLDER='upload'
    app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
    basedir = os.path.abspath(os.path.dirname(__file__))
    ALLOWED_EXTENSIONS = set(['txt','png','jpg','xls','JPG','PNG','xlsx','gif','GIF'])
    
    # 用于判断文件后缀
    def allowed_file(filename):
        return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS
    
    # 用于测试上传,稍后用到
    @app.route('/test/from')
    def upload_test():
        return render_template('from.html')
    
    # 上传文件
    @app.route('/api/upload',methods=['POST'],strict_slashes=False)
    def api_upload():
        file_dir = os.path.join(basedir, app.config['UPLOAD_FOLDER'])
        if not os.path.exists(file_dir):
            os.makedirs(file_dir)
        f = request.files['myfile']  # 从表单的file字段获取文件,myfile为该表单的name值
    
        if f and allowed_file(f.filename):  # 判断是否是允许上传的文件类型
            fname = secure_filename(f.filename)
            print fname
            ext = fname.rsplit('.',1)[1]  # 获取文件后缀
            unix_time = int(time.time())
            # new_filename = str(unix_time)+'.'+ext  # 修改了上传的文件名
            new_filename = '12'+'.'+ext  # 修改了上传的文件名
            f.save(os.path.join(file_dir,new_filename))  #保存文件到upload目录
            token = base64.b64encode(new_filename)
            print token
    
            return jsonify({"errno":0, "errmsg":"上传成功","token":token})
        else:
            return jsonify({"errno":1001, "errmsg":"上传失败"})
    
    @app.route('/api/load',methods=['GET'])
    
    def load():
        if request.method == "GET":
            if os.path.isfile(os.path.join('upload', '12.jpg')):
                return send_from_directory('upload', '12.jpg', as_attachment=True)
    
            # abort(404)
    
    
    
    if __name__ == '__main__':
        app.run(debug=True, port=9999)

    官网:http://docs.jinkan.org/docs/flask/patterns/fileuploads.html

     
     
  • 相关阅读:
    osip状态机分析
    配置tomcat 加载指定的jar
    oracle创建用户并指定表空间
    CentOS7通过rsync+crontab实现两台服务器文件同步
    CentOS7配置MySQL5.7主备
    CentOS7本地安装MySQL5.7
    设置mysql 事务锁超时时间 innodb_lock_wait_timeout
    获取指定年月的第一天与最后一天
    Nginx 反向代理504 Gateway Time-out
    ubuntu下安装配置apache2与php
  • 原文地址:https://www.cnblogs.com/yuanfang0903/p/11429185.html
Copyright © 2011-2022 走看看