我希望直接将数据二进制文件上传到GCP存储,而不将文件写入磁盘。下面是我为达到我将要达到的状态而创建的代码片段。
require 'google/cloud/storage'
bucket_name = '-----'
data = File.open('image_block.jpg', 'rb') {|file| file.read }
storage = Google::Cloud::Storage.new("project_id": "maybe-i-will-tell-u")
bucket = storage.bucket bucket_name, skip_lookup: true
现在,我想直接将这个data
放到gcs上的一个文件中,而不必将一个文件写入磁盘。
我们有什么有效的方法吗?
我尝试了以下代码
to_send = StringIO.new(data).read
bucket.create_file to_send, "image_inder_11111.jpg"
但是这会抛出一个错误
/google/cloud/storage/bucket.rb:2898:in `file?': path name contains null byte (ArgumentError)
from /home/inder/.gem/gems/google-cloud-storage-1.36.1/lib/google/cloud/storage/bucket.rb:2898:in `ensure_io_or_file_exists!'
from /home/inder/.gem/gems/google-cloud-storage-1.36.1/lib/google/cloud/storage/bucket.rb:1566:in `create_file'
from champa.rb:14:in `<main>'
发布于 2022-03-25 04:43:54
正如@stefan所建议的,应该是to_send =StringIO.new(数据),即没有.read (这将再次返回一个字符串)。
https://stackoverflow.com/questions/71612898
复制相似问题