flask文件的上传和下载

文件上传

import base64
 os
 time

from flask  Flask,render_template,request,jsonify,send_from_directory,abort
from werkzeug.utils  secure_filename

app = Flask(__name__)

UPLOAD_FOLDER = 'upload'
app.config[UPLOAD_FOLDER'] = UPLOAD_FOLDER
basedir = os.path.abspath(os.path.dirname(__file__))
ALLOWED_EXTENSIONS = set([txt',pngjpgxlsJPGPNGxlsxgifGIF])


# 判断文件的后缀
def allowed_file(filename):
    return .' in filename and filename.rsplit(in ALLOWED_EXTENSIONS


 用于测试上传
@app.route(/test/upload)
 upload_test():
    return render_template(upload.html)


 上传文件
@app.route(/api/uploadPOST'],strict_slashes=False)
 api_upload():
    file_dir = os.path.join(basedir,app.config[])
    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(]
        unix_time = int(time.time())
        new_filename = str(unix_time) + ' + ext
        f.save(os.path.join(file_dir,new_filename))

        return jsonify({"errno": 0,1)">errmsg": 上传成功"})
    else:
        ": 1001,1)">上传失败})
if __name__ == __main__:
    app.run(debug=True)

上面我们写了一个上传接口,我们为了测试这个接口是否工作正常,还得写一个页面(upload.html):

<form id=form1" method=post" action=" enctype=multipart/form-data">
    <div>
        <input id=File1" type=file" name="/>
        <input type=submit">提交</input>
    </div>
</form>

文件下载

文件下载要比上传简单的多,核心代码如下:

@app.route(/api/download/<filename>GET download(filename):
    if request.method == if os.path.isfile(os.path.join(,filename)):
            return send_from_directory(True)
        abort(404)

 

相关文章

Jinja2:是Python的Web项目中被广泛应用的模板引擎,是由Pyt...
监听QQ消息并不需要我们写代码,因为市面上已经有很多开源QQ...
【Flask框架】—— 视图和URL总结
python+web+flask轻量级框架的实战小项目。登录功能,后续功...
有了这个就可以配置可信IP,关键是不需要企业认证,个人信息...