2013-08-23 75 views
1

此問題類似於How to upload image from url to Blobstore?,但現在google.appengine.api.files已棄用。從url將圖片寫入blobstore

我所擁有的是一個Web表單,用戶在其中插入一個url並將圖像上傳到blobstore。然後在服務器端,我獲取URL來獲取圖像數據,然後創建一個google.appengine.api.files

難道沒有google.appengine.api.files可以嗎?我想保持它的簡單的情況下,當用戶提交的圖像和服務器使用blobstore_handlers.BlobstoreUploadHandler

也許我可以做一些在客戶端,在客戶端上獲取圖像,然後使用相同的與blobstore_handlers.BlobstoreUploadHandler

回答

0

您將需要使用urlfetch(或urllib2)來獲取圖像(在服務器端,基於傳入的url)。您可以使用gcs client將圖片上傳到blobstore。

下面是來自demo片段:

def create_file(self, filename): 
    """Create a file. 
    The retry_params specified in the open call will override the default 
    retry params for this particular file handle. 

    Args: 
     filename: filename. 
    """ 
    self.response.write('Creating file %s\n' % filename) 

    write_retry_params = gcs.RetryParams(backoff_factor=1.1) 
    gcs_file = gcs.open(filename, 
       'w', 
       content_type='text/plain', 
       options={'x-goog-meta-foo': 'foo', 
         'x-goog-meta-bar': 'bar'}, 
       retry_params=write_retry_params) 
    gcs_file.write('abcde\n') 
    gcs_file.write('f'*1024*1024 + '\n') 
    gcs_file.close() 
    self.tmp_filenames_to_clean_up.append(filename) 
+0

謝謝你,但正如我所說,我想保持它的簡單,所以沒有GCS,但只有Blob存儲。其實我對這個區別感到困惑。 –

+0

我同意,GAE開始使用不同的方法令人困惑。你可以通過調用create_gs_key從gcs文件創建一個blob_key https://developers.google.com/appengine/docs/python/blobstore/functions#create_gs_key –

+0

因此,將文件寫入gcs,然後調用blobstore.create_gs_key(它創建blob密鑰,你*應該*能夠提供圖像)。我不確定刪除功能的關係。 –