我有一个装有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))
答案 0 :(得分:0)
要渲染图像,请获取相册,然后将图像作为属性访问,例如constructor(
@Inject(MAT_DIALOG_DATA) public data: any,
public dialogRef: MatDialogRef<ESignatureComponent>,
) { }
onCloseClick(){
this.dialogRef.close();
}
,album.foto_one
,等等:
album.foto_two
然后在@app.route('/show-album/<int:id>', methods=['GET', 'POST'])
def show_album(id=None):
try:
album = Album.query.get(id)
return render_template('album.html', album=album)
except:
abort(404)
中输入
album.html
您还可以将图像名称存储为数组,并按如下所示进行渲染:
<img src="{{ url_for('/static/uploads/album.foto_one }}">
<img src="{{ url_for('/static/uploads/album.foto_two }}">
然后在模板中遍历照片列表,而不是键入所有链接。
class Album(db.Model):
id = db.Column(db.Integer, primary_key=True)
photos = db.Column(ARRAY(String))