現在、私はFlask!にギャラリーシステムを書いています!私は今、画像をアップロードすることができます、私は画像を表示することはできません!私はsend_from_directory関数を使用しようとしましたが、それはちょうど私の応答ストリームのインスタンスを返します!静的ファイルパスをFlaskのURLにどのようにマップするのですか?
class Image(db.Model):
__tablename__ = 'images'
id = db.Column(db.Integer, primary_key=True)
url = db.Column(db.String)
timestamp = db.Column(db.DateTime, index=True,default=datetime.utcnow)
author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
def get_image(self):
return send_from_directory(self.url, '')
そして、私の見解は以下の通りです:
@gallery.route('/', methods=['GET', 'POST'])
@gallery.route('/index', methods=['GET', 'POST'])
def index():
page = request.args.get('page', 1, type=int)
pagination = Image.query.order_by(Image.timestamp.desc()).paginate(
page, per_page=current_app.config['LANDPACK_POSTS_PER_PAGE'],
error_out=False
)
posts = pagination.items
return render_template('gallery/index.html', posts=posts, pagination=pagination)
@gallery.route('/upload', methods=['GET', 'POST'])
def upload():
form = ImageForm()
if request.method == 'POST':
filename = secure_filename(form.image.data.filename)
image_url = os.path.join(current_app.config['UPLOAD_FOLDER'], filename)
form.image.data.save(image_url)
image = Image(url=image_url)
db.session.add(image)
db.session.commit()
flash('You have add a new photo!')
send_file = send_from_directory(image_url, filename)
print send_file
return redirect(url_for('.index'))
else:
filename = None
return render_template('gallery/upload.html', form=form)
マイ形式:
from flask.ext.wtf import Form
from flask.ext.wtf import Form
from wtforms import StringField, PasswordField, BooleanField, SubmitField, IntegerField
from wtforms.validators import Required, Email, Length, Regexp, EqualTo
from wtforms import ValidationError
from flask_wtf.file import FileField
class ImageForm(Form):
name = StringField('Image Name', validators=[Length(1, 64)])
tag = IntegerField('Tag Value', default=50, validators=[Required(), Length(1, 64)])
image = FileField('Your photo')
submit = SubmitField('Upload Image')
マイテンプレートファイルは、そのような単純です:
<img class="img-rounded profile-thumbnail" src="{{ post.get_image() }}">
私が持つことができますどのようにurl for src、私はget_image()関数が私にurを返すことを願っていますl(例:http://127.0.0.1/image/sample.jpg) 誰でも手伝いますか?
は、あなたがしようとしました。これに加えて、あなたはまた、ファイルが存在しないかがあるかどうか、以下のコードを使用してインデックス()関数内で確認することができますか?ただのURL? – lapinkoira