Если вы обеспечите gs_bucket_name
в blobstore.create_upload_url
файл будет храниться в ГКС вместо Blobstore, это описано в официальной документации: Using the Blobstore API with Google Cloud Storage
blobstore.create_upload_url(
success_path=webapp2.uri_for('upload'),
gs_bucket_name="mybucket/dest/location")
Вы можете посмотреть на простой может загрузка обработчика, выполненная в webapp2
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
import webapp2
import cloudstorage as gcs
class Upload(blobstore_handlers.BlobstoreUploadHandler):
"""Upload handler
To upload new file you need to follow those steps:
1. send GET request to /upload to retrieve upload session URL
2. send POST request to URL retrieved in step 1
"""
def post(self):
"""Copy uploaded files to provided bucket destination"""
fileinfo = self.get_file_infos()[0]
uploadpath = fileinfo.gs_object_name[3:]
stat = gcs.stat(uploadpath)
# remove auto generated filename from upload path
destpath = "/".join(stat.filename.split("/")[:-1])
# copy file to desired location with proper filename
gcs.copy2(uploadpath, destpath)
# remove file from uploadpath
gcs.delete(uploadpath)
def get(self):
"""Returns URL to open upload session"""
self.response.write(blobstore.create_upload_url(
success_path=uri_for('upload'),
gs_bucket_name="mybucket/subdir/subdir2/filename.ext"))
Взгляните на [Загрузка файла GCS] (http: // romanno wicki.readthedocs.io/en/latest/gae/file-upload.html#file-upload) Вы все еще можете использовать blobstore.create_upload_url для GCS, описанную здесь в документации: [Использование API Blobstore с облачным хранилищем Google] (https : //cloud.google.com/appengine/docs/python/blobstore/) – manRo
Спасибо @manRo, так что указание bucketname - это все, что должно произойти для blob, чтобы перейти к gcs вместо blobstore? Возможно, положите это в ответ, и я могу принять его. –
Да, это правильно, если вы предоставите файл имени ведра, будет загружен в GCS – manRo