【发布时间】:2018-10-16 20:02:49
【问题描述】:
我有一个带有 Flask 的图片上传区。该区域还可以加载多个图像。最多有 8 个图像上传轨道。上传保存的图像后,我将它们放入文件中。我会在网站上再次发布他们上传的图片。我正在考虑在数据库中注册它,但我不知道如何注册它。我想要带有输入文件的图片。上传了多少张图,我不明白怎么画这些图。
简而言之,当用户保存保存的图像时,我将其保存在文件中,并且我想将上传的图像保存到数据库中以在我的网站上发布。我怎样才能做到这一点?我正在使用 SQLalchemy。
HTML;
<input id="files" name="files" type="file" multiple>
Python;
UPLOAD_FOLDER = 'static/uploads/'
ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif'])
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
class AlbumForm(Form):
files = FileField(render_kw={'multiple': True})
#Album form
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route("/admin/fotografAlbumu", methods=["GET", "POST"])
def upload():
form = AlbumForm(request.form)
if request.method == 'POST' and 'files' in request.files:
for f in request.files.getlist('files'):
files = form.files.data
username = session["username"]
url=app.config['UPLOAD_FOLDER']+username
f.save(os.path.join(url, f.filename))
return render_template('/admin/galeri.html',form=form)
return render_template('/admin/galeri.html',form=form)
@app.route('/uploaded_file/<path:filename>')
def uploaded_file(filename):
print(filename)
username = session["username"]
url=app.config['UPLOAD_FOLDER']+username
return send_from_directory(url, filename)
我认为的数据库结构如下;
class Album(db.Model):
albumid = db.Column(db.Integer, primary_key=True)
userid = db.Column(db.Integer, db.ForeignKey('users.userid'))
fotoOne = db.Column(db.String(80))
fotoTwo = db.Column(db.String(80))
fotoThree = db.Column(db.String(80))
fotoFour = db.Column(db.String(80))
fotoFive = db.Column(db.String(80))
fotoSix = db.Column(db.String(80))
fotoSeven = db.Column(db.String(80))
fotoEight = db.Column(db.String(80))
【问题讨论】:
-
将文件存储在数据库中并不是一个好主意。仅存储您需要的元数据。还看看 sqlalchemy 是如何工作的。
标签: python html database flask sqlalchemy