在我的云功能中,我需要在云存储中获取一个文件,然后通过HTTP POST请求将该文件发送到API。我尝试了以下代码:
storage_client = storage.Client()
bucket = storage_client.bucket(BUCKET_NAME)
source_blob_name = "/compressed_data/file_to_send.7z"
blob = bucket.blob(source_blob_name)
url = UPLOADER_BACKEND_URL
files = {'upload_file': blob}
values = {'id': '1', 'ouid': OUID}
r = requests.post(url, files=files, data=values)
它给出了一个错误说:
Traceback (most recent call last): File "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py", ...
\ line 90, in encode_multipart_formdata body.write(data) TypeError: a bytes-like object is required, not 'Blob'
如果此代码要在实际的VM上运行,则可以执行以下操作:
url = UPLOADER_BACKEND_URL
files = {'upload_file': open('/tmp/file_to_send.7z','rb')}
values = {'id': '1', 'name': 'John'}
r = requests.post(url, files=files, data=values)
所以问题是:在云函数中,如何从云存储中加载文件,使其输出与pythonopen(filename, 'rb')
函数相同?
我知道我可以blob.download_to_file()
先创建open()
文件,但是我想知道是否有更快的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句