【问题标题】:Error creating folder in google drive through ruby通过 ruby​​ 在谷歌驱动器中创建文件夹时出错
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多