Прежде чем переключиться на GCS, я использовал функцию изменения размера для изображений на лету (= s200). Возможно ли это с изображениями, хранящимися на GCS? Кажется, я не могу заставить его работать.Изменить размеры изображений, которые подаются непосредственно от GCS в GAE, используя get_serving_url?
Загрузите изображение в GCS, сохраните blobkey, а затем используйте get_serving_url, чтобы получить URL-адрес изображения. Используя этот URL-адрес, изображение появляется на моем сайте. Но если я добавлю функцию изменения размера на лету (= s200), я получаю ошибку 404.
Вот код, я использую в Настой:
def gcs_upload_image (image, filename):
write_retry_params = gcs.RetryParams(backoff_factor=1.1)
with gcs.open(filename,
mode='w',
content_type=image.mimetype,
options={'x-goog-meta-foo': 'foo',
'x-goog-meta-bar': 'bar'},
retry_params=write_retry_params) as imageFile:
image.save(imageFile)
blobstore_filename = '/gs' + filename
return blobstore.create_gs_key(blobstore_filename)
@mod.route("/account", methods=["GET", "POST"])
@login_required
def account():
if request.method == "GET":
return render_template('users/account.html')
else:
image = request.files.get('file', None)
bucket = current_app.config['BUCKET']
filename = "/".join(['', bucket, g.user.key.id()])
if image:
if g.user.avatar:
blobstore.delete(g.user.avatar)
gcs_key = gcs_upload_image(image, filename)
blobkey = blobstore.BlobKey(gcs_key)
g.user.avatar = blobkey
g.user.put()
return redirect(url_for("users.account"))
@mod.route('/u/<userid>')
def profile(userid):
user = User.get_by_id(userid)
url = get_serving_url(user.avatar)
return render_template('users/profile.html', user=user, url=url)
Это сделало трюк! Благодарю. Я не знаю, как я это пропустил! – TylerW