3

我在使用 ruby​​ 中的 google-drive-api 库在 Google Drive 中创建文件夹时遇到问题。我可以成功登录,列出文件夹,甚至将文件添加到根文件夹。我在根文件夹下有一个名为“应用程序”的文件夹。列出所有文件显示此文件夹的 id,我们称之为“0BwiVxEBt”。在我的控制器中,我成功初始化了谷歌驱动器连接(因为我能够列出所有文件),然后调用 create_parent('Test') 方法在我的 google_drive_connection.rb 中:

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-apps.folder '

错误:没有这样的文件或目录 - 测试

可能是一个小问题,但似乎无法找到它!

感谢您提供的任何指针/帮助。

编辑 发现了问题,所以对于任何对解决方案感兴趣的人,对于文件夹,您只需要在请求中发送元数据,不需要媒体部分,只需要正文(元数据)信息,所以我的“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
4

1 回答 1

2

找到了我的问题的答案,在原始问题中添加了编辑和解决方案。简而言之,对于一个文件夹,只在请求中添加正文部分,而不是媒体部分。对于文件夹,只需要元数据。

于 2013-08-01T02:41:53.320 回答