1 回答
TA贡献1812条经验 获得超5个赞
我相信您应该将图像作为路径名存储到您的帖子表中,而不是 blob。
在您的数据库中将其更改为:
link = db.Column(db.String(30))
然后在将帖子添加到数据库时将图像文件名路径的字符串传递到帖子中
使用随机字符串重命名文件也是一个好习惯,因为许多用户可能会上传,myCatPicture.jpg这会导致它覆盖文件。
这样的事情会做
def get_random_string(length):
# Random string with the combination of lower and upper case
letters = string.ascii_letters
return ''.join(random.choice(letters) for i in range(length))
然后在保存图像时保存新文件名
if not allowed_images(image.filename):
flash('Invalid image extension!', 'danger')
return redirect(request.url)
else:
ext = os.path.splitext(file_name)[1] # get the file extension
new_filename = get_random_string(20) # create a random string
image.save(os.path.join(app.config['IMAGE_UPLOADS'], new_filename+ext)) # save with the new path
并在创建后使用新字符串。
post = Post(title=form.title.data,
body=form.body.data, link=os.path.join(app.config['IMAGE_UPLOADS'], new_filename+ext) , user_id=current_user.id) #here we are substituting the old blod with the new stored image path string
笔记:
只要您将路径存储在数据库中,文件名并不重要。您可以随时查找它以获取图像/路径。
...
然后在你的模板中(因为你已经有了所有的帖子)你可以开始一个 for 循环
{% for post in range(len(posts)) %}
<h1> {{ post.title }} </h1>
<img src= {{post.link }} >
<p> {{ post.body }} </p>
{% endfor %}
这应该遍历每个帖子标题、图像和内容等。
同样,我对此有点模糊。但认为这几乎涵盖了它。
添加回答
举报