使用Ruby无需临时文件上传CSV payload到Google Storage的方法问询
实现方案
完全可以避免创建本地临时文件,Google Cloud Storage官方Ruby SDK的create_file方法本身支持传入类IO对象,你只需要将生成好的CSV字符串包装为StringIO实例直接传入即可,无需落盘。
示例代码
require "google/cloud/storage" require "stringio" # 此处替换为你通过CSV库生成的字符串payload csv_payload = CSV.generate do |csv| csv << ["列1", "列2", "列3"] csv << ["值1", "值2", "值3"] end storage = Google::Cloud::Storage.new bucket = storage.bucket bucket_name # 直接传入StringIO对象,可选指定content_type匹配文件类型 file = bucket.create_file StringIO.new(csv_payload), file_name, content_type: "text/csv"
补充说明
create_file方法的第一个参数支持三类输入:
- 本地文件路径字符串
- 任意响应
read方法的IO对象(包括StringIO、File实例、网络流等) - 已打开的文件描述符
如果你的payload体积较大,也可以直接通过流的方式分块传入,全程不需要在磁盘生成临时文件。
内容的提问来源于stack exchange,提问作者Purusottam
相关产品推荐
相关产品推荐

