我们有一个包含 20000 张图像的本地目录,需要转到 GCS。使用 R (and googleCloudStorageR
),我们可以遍历每个图像并上传到 GCS,如下所示:
# setup
library(googleCloudStorageR)
gcs_auth(json_file = 'my/gcs/admin/creds.json')
all_png_images <- list.files('../path/to/local-images/directory')
# and loop
for(i in 1:length(all_png_images)) {
googleCloudStorageR::gcs_upload(
file = paste0(base_url, all_png_images[i]),
bucket = 'my-bucket',
name = paste0('images-folder/', all_png_images[i]),
predefinedAcl = 'default'
)
}
这完美地工作......但是,如果我可以简单地指向目录并一次上传所有内容会更好,而不是必须指向一个目录并循环遍历每个文件。我曾尝试使用该gcs_save_all
功能,但没有成功:
googleCloudStorageR::gcs_save_all(
directory = 'path-to-all-images',
bucket = 'my-bucket'
)
抛出错误2020-10-01 16:23:47 -- File size detected as 377.1 Kb 2020-10-01 16:23:47> Request Status Code: 400 Error: API returned: Cannot insert legacy ACL for an object when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access
我试图找出为什么gcs_save_all
不起作用,或者是否有另一种方法可以在 R 中做到这一点。