├── requirements.txt ├── templates ├── browser.html ├── manage.html └── index.html ├── README.md └── app.py /requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.11.1 2 | Flask-Uploads==0.2.1 3 | Flask-WTF==0.13.1 4 | -------------------------------------------------------------------------------- /templates/browser.html: -------------------------------------------------------------------------------- 1 | 2 |
URL: {{ file_url }}
9 |Upload Success!
20 | {% endif %} 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Cloud-Drive 2 | A minimal photo upload and manage system with Flask and Flask-Uploads (Multiple file upload support!). 3 | 4 | ## Extensions 5 | Flask-Uploads==0.2.1 6 | Flask-WTF==0.13.1 7 | 8 | 9 | ## Installation 10 | First, clone it from github: 11 | ``` 12 | git clone https://github.com/helloflask/cloud-drive.git 13 | ``` 14 | 15 | Then run it (make sure all extensions above were installed): 16 | ``` 17 | python app.py 18 | ``` 19 | 20 | Now Go to http://127.0.0.1:5000/ 21 | 22 | 23 | ## More details 24 | 关于这个项目的详细介绍:[Flask文件上传](https://zhuanlan.zhihu.com/p/24429519) 25 | 更多关于Flask的原创优质内容,欢迎关注[Hello, Flask!——知乎专栏](https://zhuanlan.zhihu.com/flask) 26 | 一个更完善的版本:https://github.com/greyli/flask-file-uploader 27 | 28 | ## License 29 | This demo application is licensed under the MIT license: http://opensource.org/licenses/mit-license.php 30 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import os 3 | import time 4 | import hashlib 5 | 6 | from flask import Flask, render_template, redirect, url_for, request 7 | from flask_uploads import UploadSet, configure_uploads, IMAGES, patch_request_class 8 | from flask_wtf import FlaskForm 9 | from flask_wtf.file import FileField, FileRequired, FileAllowed 10 | from wtforms import SubmitField 11 | 12 | app = Flask(__name__) 13 | app.config['SECRET_KEY'] = 'I have a dream' 14 | app.config['UPLOADED_PHOTOS_DEST'] = os.getcwd() + '/static' 15 | 16 | photos = UploadSet('photos', IMAGES) 17 | configure_uploads(app, photos) 18 | patch_request_class(app) # set maximum file size, default is 16MB 19 | 20 | 21 | class UploadForm(FlaskForm): 22 | photo = FileField(validators=[FileAllowed(photos, u'Image Only!'), FileRequired(u'Choose a file!')]) 23 | submit = SubmitField(u'Upload') 24 | 25 | 26 | @app.route('/', methods=['GET', 'POST']) 27 | def upload_file(): 28 | form = UploadForm() 29 | if form.validate_on_submit(): 30 | for filename in request.files.getlist('photo'): 31 | name = hashlib.md5('admin' + str(time.time())).hexdigest()[:15] 32 | photos.save(filename, name=name + '.') 33 | success = True 34 | else: 35 | success = False 36 | return render_template('index.html', form=form, success=success) 37 | 38 | 39 | @app.route('/manage') 40 | def manage_file(): 41 | files_list = os.listdir(app.config['UPLOADED_PHOTOS_DEST']) 42 | return render_template('manage.html', files_list=files_list) 43 | 44 | 45 | @app.route('/open/