2016-09-17 2 views
2

В настоящее время мы используем blobstore.create_upload_url для создания URL-адресов для загрузки, которые будут использоваться в интерфейсе, см. Uploading a blob. Однако, используя Google Cloud Storage (GCS) от Google, я бы хотел использовать GCS вместо blobstore. Мы используем в настоящее время blobstore.create_upload_url, но я не могу найти ничего эквивалентного в документации GCS. Я что-то упускаю? Есть ли лучший способ загрузить файлы в GCS из интерфейса?Что такое GCS-эквивалент blobstore «Create_upload_url»?

Благодаря Роб

+0

Взгляните на [Загрузка файла 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

+0

Спасибо @manRo, так что указание bucketname - это все, что должно произойти для blob, чтобы перейти к gcs вместо blobstore? Возможно, положите это в ответ, и я могу принять его. –

+1

Да, это правильно, если вы предоставите файл имени ведра, будет загружен в GCS – manRo

ответ

3

Если вы обеспечите 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")) 
+0

, также обратите внимание, что GCS тоже имеет это, скрытое в xml-разделе api. https://cloud.google.com/storage/docs/access-control/create-signed-urls-program и https://cloud.google.com/storage/docs/xml-api/post-object –

Смежные вопросы