1
在我切換到GCS之前,我曾經可以使用動態調整大小功能(= s200)。 GCS上存儲圖像可能嗎?我似乎無法得到它的工作。使用get_serving_url調整在GAE中直接從GCS提供的圖像的大小?
我將圖片上傳到GCS,保存blobkey,然後使用get_serving_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