google-drive-ruby:将文件上传到文件夹会复制文件夹和根路径中的文件

时间:2017-05-17 09:57:18

标签: ruby google-drive-api

我编写了一个Ruby脚本来查找具有给定日期的文档,并使用google-drive-ruby gem将它们上传到Google云端硬盘。我在gdrive根路径中有一个文件夹,我想放置文件,我使用collection_by_title访问它,然后使用.add方法上传文件。

问题是文件每次上传两次,一次上传到我想要的文件夹,另一次上传到我的GDrive的根路径。有什么想法吗?

这是上传文件的方法:

def upload_document(file, folder_code)
  folder = @session.collection_by_title("#{folder_code}")
  path = "#{@basedir}/#{folder_code}/#{file}"
  folder.add(@session.upload_from_file(path, file, convert: false)) 
end

编辑:方法和变量翻译成英文。

每次触发方法upload_document时,文件的一个副本上传到文件夹,另一个副本上传到gdrive的根路径。

示例:调用方法upload_document,提供文件(454327.pdf)以及必须在gdrive中上传文件夹的代码(" 1")。我使用collection_by_title构建文件夹对象,构建文件在本地网络中的路径,最后使用upload_from_file上传文件。此时,文件的两个副本已上传,一个是gdrive的根路径(我不想要),另一个是gdrive中的右侧文件夹。

1 个答案:

答案 0 :(得分:1)

我收到了宝石创作者的回答,解释了发生了什么,我的剧本终于按照我的预期运作了。

https://github.com/gimite/google-drive-ruby/issues/260

问题是默认情况下文件首先上传到根目录然后.add只是将文件移动到选定的集合,因此在移动操作完成后需要从root删除文件。

@session.root_collection.remove(file)