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))
posted @ 2017-06-13 16:56  Erick-LONG  阅读(1129)  评论(0编辑  收藏  举报