我在使用 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