亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python/GCP 健全性檢查:這是在 POST 調用中引用存儲在

Python/GCP 健全性檢查:這是在 POST 調用中引用存儲在

HUH函數 2022-07-19 15:26:14
場景:存儲在 GCP 存儲桶中的圖像文件需要通過 POST 發送到第三方 REST 端點問題:這真的是最好的模式嗎?有沒有更有效、更簡潔的方法?我們有通過移動應用上傳到 GCP 存儲桶的圖像。當圖像上傳的 finalize 事件觸發時,我們有一個 GCP 云函數 (Python 3),它通過獲取上傳圖像的 ref 來對此做出反應,將其下載到臨時文件,然后使用該臨時文件作為 POST 的圖像源. open這是我們當前的代碼,它可以工作,但在我看來,這似乎與多個命令令人費解。更具體地說:有沒有更好的方法來簡單地從 GCP 存儲中獲取圖像 blob 并將其附加到 POST 調用,而無需先將其保存為本地文件然后打開它以便將其附加到 POST?def third_party_upload(data, context):  # get image from bucket  storage_client = storage.Client()  bucket = storage_client.bucket(data['bucket'])  image_blob = bucket.get_blob(data['name'])  download_path = '/tmp/{}.jpg'.format(str(uuid.uuid4())) #temp image file download location  # save GCP Storage blob as a temp file  with open(download_path, 'wb') as file_obj:    image_blob.download_to_file(file_obj)    # open temp file and send to 3rd-party via rest post call    with open(download_path, 'rb') as img:      files = {'image': (data['name'], img, 'multipart/form-data', {'Expires': '0'}) }      headers = {            'X-Auth-Token': api_key,            'Content-Type': 'image/jpg',            'Accept': 'application/json'      }      # make POST call      response = requests.post(third_party_endpoint, headers=headers, files=files)      print('POST response:', response)更新:一些評論者提到簽名 URL 是一種可能性,我同意它們是一個很好的選擇。但是,我們堅持要求將圖像二進制文件包含為 POST 正文。在這種情況下,簽名 URL 將不起作用。
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

HTTP 方法 POST 需要數據。您必須在 HTTP 請求中提供該數據。除了讀取之外,沒有什么神奇的方法可以獲取 Cloud Storage 數據。該過程是從 Cloud Storage 讀取數據,然后將該數據提供給 POST 請求。



查看完整回答
反對 回復 2022-07-19
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

如果您能夠將 URL 發送到第三方端點而不是實際的圖像內容,則可以使用簽名 URL 提供對圖像的限時訪問,而無需提供對存儲桶的第三方訪問權限或制作存儲桶上市。

更多信息在這里:https ://cloud.google.com/storage/docs/access-control/signed-urls


查看完整回答
反對 回復 2022-07-19
  • 2 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號