问题描述
我正在开发我的烧瓶博客,并且在尝试将图像文件上传到站点时遇到了这个问题。
这是我的route.py文件
import os
import secrets
from PIL import Image
from flask import render_template,url_for,flash,redirect,request,abort
from flaskblog import app,db,bcrypt
from flaskblog.forms import RegistrationForm,LoginForm,UpdateAccountForm,PostForm
from flaskblog.models import User,Post
from flask_login import login_user,current_user,logout_user,login_required
def save_post_picture(form_picture):
random_hex = secrets.token_hex(8)
_,f_ext = os.path.splitext(form_picture.filename)
picture_fn = random_hex + f_ext
picture_path = os.path.join(app.root_path,'static/post_pics',picture_fn)
output_size = (125,125)
i = Image.open(form_picture)
i.thumbnail(output_size)
i.save(picture_path)
return picture_fn
@app.route("/post/new",methods=['GET','POST'])
@login_required
def new_post():
form = PostForm()
if form.validate_on_submit():
if form.post_picture.data:
picture_file = save_post_picture(form.post_picture.data)
# post.post_image_file = url_for('static',filename='post_pics/' + post.post_image_file)
post = Post(title=form.title.data,content=form.content.data,author=current_user,post_image_file=form.post_picture.data)
db.session.add(post)
db.session.commit()
post.post_image_file = url_for('static',filename='post_pics/' + post.post_image_file)
else:
post = Post(title=form.title.data,author=current_user)
db.session.add(post)
db.session.commit()
flash('Your post has been created!','success')
return redirect(url_for('home'))
return render_template('create_post.html',title='New Post',form=form,legend='New Post')
这是我的forms.py文件
from flask_wtf import FlaskForm
from flask_wtf.file import FileField,FileAllowed
from flask_login import current_user
from wtforms import StringField,PasswordField,SubmitField,BooleanField,TextAreaField
from wtforms.validators import DataRequired,Length,Email,EqualTo,ValidationError
from flaskblog.models import User
class PostForm(FlaskForm):
title = StringField('Title',validators=[DataRequired()])
content = TextAreaField('Content',validators=[DataRequired()])
post_picture = FileField('Add post image',validators=[FileAllowed(['jpg','png'])])
submit = SubmitField('Post')
这是我的models.py文件
from datetime import datetime
from flaskblog import db,login_manager
from flask_login import UserMixin
class Post(db.Model):
id = db.Column(db.Integer,primary_key=True)
title = db.Column(db.String(100),nullable=False)
date_posted = db.Column(db.DateTime,nullable=False,default=datetime.utcnow)
content = db.Column(db.Text,nullable=False)
user_id = db.Column(db.Integer,db.ForeignKey('user.id'),nullable=False)
post_image_file = db.Column(db.String(20),nullable=True)
def __repr__(self):
return f"Post('{self.title}','{self.date_posted}','{self.post_image_file}')"
关于这些,当我用图像文件创建新帖子时,您认为我如何解决以下问题?
注意:我可以将图像文件保存到static / post_pics目录
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)