【发布时间】:2013-08-01 04:41:39
【问题描述】:
我在使用 ruby 中的 google-drive-api 库在 Google Drive 中创建文件夹时遇到问题。 我可以成功登录,列出文件夹,甚至将文件添加到根文件夹。 我在根文件夹下有一个名为“应用程序”的文件夹。列出所有文件显示此文件夹的 id,我们称之为“0BwiVxEBt”。 在我的控制器中,我成功初始化了谷歌驱动器连接(因为我能够列出所有文件),然后调用我的 google_drive_connection.rb 中的 create_parent('Test') 方法:
def create_folder (title)
file = @drive.files.insert.request_schema.new({
'title' => title,
'description' => title,
'mimeType' => 'application/vnd.google-apps.folder'
})
file.parents = [{"id" => '0BwiVxEBt'}] # 0BwiVxEBt is id for Applications folder
media = Google::APIClient::UploadIO.new(title, 'application/vnd.google-apps.folder')
result = @client.execute(
:api_method => @drive.files.insert,
:body_object => file,
:media => media,
:parameters => {
'uploadType' => 'multipart',
#'convert' => false,
'alt' => 'json'})
if result.status == 200
return result.data
else
puts "An error occurred: #{result.data['error']['message']}"
return nil
end
end
对于我在其他帖子中看到的插入文件夹就像文件插入(在此 rb 文件的其他方法中工作正常),没有扩展名的标题,mimeType 为 'application/vnd.google-应用程序.文件夹'
错误:没有这样的文件或目录 - 测试
可能是小问题,但似乎找不到!
感谢您提供的任何指针/帮助。
编辑 发现了问题,所以对于任何对解决方案感兴趣的人,对于文件夹,您只需要在请求中发送元数据,不需要媒体部分,只需要正文(元数据)信息,所以我的 'create_folder' 方法导致:
def create_folder (title)
file = @drive.files.insert.request_schema.new({
'title' => title,
'description' => title,
'mimeType' => 'application/vnd.google-apps.folder'
})
file.parents = [{"id" => '0BwiVxEBt'}] # 0BwiVxEBt is id for Applications folder
result = @client.execute(
:api_method => @drive.files.insert,
:body_object => file)
if result.status == 200
return result.data
else
puts "An error occurred: #{result.data['error']['message']}"
return nil
end
end
【问题讨论】:
-
您能否也发布出现该错误的代码?
-
我从控制器操作中调用此方法 'create' def create googleDriveCon = GoogleDriveConnection.new(emailAddress) googleDriveCon.create_folder('Test') end 我通过一个名为的方法修改了对 create_folder 的调用'retrieve_all_files' 输出所有文件名 + id 并且工作得很好。该错误是由 api 引发的,因为我没有任何地方可以触发该错误消息
标签: ruby-on-rails ruby google-drive-api