使用Dropbox API覆盖现有文件

时间:2014-09-07 15:10:25

标签: ruby dropbox dropbox-api

我想覆盖Dropbox上的现有文件。

以下是我使用的代码(基于the docs):

require 'dropbox_sdk'

ACCESS_TOKEN = '###'

client = DropboxClient.new(ACCESS_TOKEN)

file = open('/source_folder/file1.csv')
response = client.put_file('/target_folder/file1.csv', file, true)
puts "uploaded:", response.inspect

这不会覆盖现有文件。我通过查看它所在的目录来检查它。它包含旧版本而不是新版本。

response.inspect返回:

{"rev"=>"9e6b400e64803", "thumb_exists"=>false, "path"=>"/target_folder/file1.csv", "is_dir"=>false, "client_mtime"=>"Sun, 07 Sep 2014 14:56:35 +0000", "icon"=>"page_white", "bytes"=>14705913, "modified"=>"Sun, 07 Sep 2014 14:56:35 +0000", "size"=>"14 MB", "root"=>"dropbox", "mime_type"=>"text/csv", "revision"=>648884}

我接下来应该尝试什么?

1 个答案:

答案 0 :(得分:1)

我意识到这不是一个真正的答案,但是没有其他地方可以粘贴它。 : - )

如果它有帮助,这里是我写一个文件,阅读它,覆盖该文件,然后读出新内容的成绩单。也许你可以发现你在做什么和我在做什么之间的区别。 (或者也许您可以使用相同的方法调用get_file来验证您的写入是否确实有效。)

1.9.2-p290 :001 > require 'dropbox_sdk'
 => true
1.9.2-p290 :002 > client = DropboxClient.new('<my access token>')
 => #<DropboxClient:0x007ffb0423bfe8 @session=#<DropboxOAuth2Session:0x007ffb0423bf98 @locale=nil, @access_token="<my access token>">, @root="auto">
1.9.2-p290 :003 > client.put_file('hello.txt', 'hello', true)
 => {"rev"=>"a49510f8d89e", "thumb_exists"=>false, "path"=>"/hello.txt", "is_dir"=>false, "client_mtime"=>"Sun, 07 Sep 2014 20:59:24 +0000", "icon"=>"page_white_text", "bytes"=>5, "modified"=>"Sun, 07 Sep 2014 20:59:24 +0000", "size"=>"5 bytes", "root"=>"dropbox", "mime_type"=>"text/plain", "revision"=>42133}
1.9.2-p290 :004 > client.get_file('hello.txt')
 => "hello"
1.9.2-p290 :005 > client.put_file('hello.txt', 'goodbye', true)
 => {"rev"=>"a49610f8d89e", "thumb_exists"=>false, "path"=>"/hello.txt", "is_dir"=>false, "client_mtime"=>"Sun, 07 Sep 2014 20:59:42 +0000", "icon"=>"page_white_text", "bytes"=>7, "modified"=>"Sun, 07 Sep 2014 20:59:42 +0000", "size"=>"7 bytes", "root"=>"dropbox", "mime_type"=>"text/plain", "revision"=>42134}
1.9.2-p290 :006 > client.get_file('hello.txt')
 => "goodbye"