2016-05-14 55 views
2

我正在從Blobstore切換到Google Cloud Storage,以便在項目中上傳圖片(因爲Google調用Blobstore「superseded」)。將文件直接上傳到Google Cloud Storage for GAE應用程序

在Blobstore中,多部分表單將直接提交(上傳)到Blobstore,然後它將重寫請求並重定向到GAE應用程序以處理BlobKey(s)。這意味着GAE應用的負載很小。

有沒有一種方法可以實現與Google雲端存儲(GCS)類似的工作流程?

Reading and Writing to Google Cloud Storage給出的示例涉及GAE代碼處理上載,讀取數據並將其保存在GCS中。

類似地,爲(例如)上傳的圖像文件提供服務:看起來好像一個處理程序必須在GAE代碼中實現才能從GCS讀取並返回圖像數據。

是不是有一種方法可以簡單地爲GCS中的資源生成一個URL(AFAIK AWS S3支持這個)並讓它從那裏服務?

回答

2

您可以繼續使用blobstore API,但實際存儲在GCS中,這意味着相同的上傳行爲以及可能對您的應用程序進行的最小更改。

Using the Blobstore API with Google Cloud Storage (Python)

您可以使用Blob存儲區API存儲在雲存儲的斑點它們存儲在Blob存儲區,而不是 。您需要按照Google Cloud Storage文檔中描述的 設置存儲桶,並指定存儲桶 和blobstore.blobstore.create_upload_url gs_bucket_name參數中的文件名。在您的上傳處理程序中,您需要處理返回的FileInfo元數據,並明確存儲稍後檢索blob所需的Google Cloud Storage文件名。

這裏還介紹了一個完整的示例應用程序。

更新:哎呀,上述答案適用於Python環境,Java的一個如下:

Using the Blobstore API with Google Cloud Storage (Java)

您可以使用Blob存儲區API存儲BLOB雲存儲,而不是將它們存儲在Blobstore中的 。你需要建立一個水桶描述 的Google Cloud Storage文檔中,並指定在BlobstoreServicecreateUploadUrl桶 和文件名,在UploadOptions參數指定 桶名稱。在您的上傳 處理程序中,您需要處理返回的FileInfo元數據,並且 會明確存儲稍後檢索 blob所需的Google Cloud Storage文件名。

Java沒有完整的示例應用程序。

+0

謝謝。我沒有找到那個鏈接。 – markvgti

1

Google雲端存儲支持生成用於上傳或讀取的URL。 欲瞭解更多信息,請參閱:https://cloud.google.com/storage/docs/access-control/create-signed-urls-program

gcloud-java-storage庫可以幫助創建這樣的signed URL

+0

我讀過這篇文章,但它與現在的方式有很大的變化,並且和大多數項目一樣,我非常緊張: - )...儘管我最終可能轉而使用[Policy Documents](https:// cloud.google.com/storage/docs/xml-api/post-object#policydocument):它們似乎提供了很多。 – markvgti

相關問題