我编写了一个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中的右侧文件夹。
答案 0 :(得分:1)
我收到了宝石创作者的回答,解释了发生了什么,我的剧本终于按照我的预期运作了。
https://github.com/gimite/google-drive-ruby/issues/260
问题是默认情况下文件首先上传到根目录然后.add只是将文件移动到选定的集合,因此在移动操作完成后需要从root删除文件。
@session.root_collection.remove(file)