6

我知道这里问了一个类似的问题,但是我仍然无法完成这项工作,因为我的情况有点不同。我希望能够使用google-drive-ruby gem在 google drive 中创建一个文件夹。

根据谷歌(https://developers.google.com/drive/folder),使用“Drive”Api 时,您可以通过插入具有 mime 类型“application/vnd.google-apps.folder”的文件来创建文件夹

例如

POST https://www.googleapis.com/drive/v2/files
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json
...
{
  "title": "pets",
  "parents": [{"id":"0ADK06pfg"}]
  "mimeType": "application/vnd.google-apps.folder"
}

就我而言,我希望能够做同样的事情,但在使用 google_drive API 时。它具有接受 mime-type 选项的 upload_from_file 选项,但这仍然对我不起作用,到目前为止我得到的最好结果是执行以下代码时是来自 Google 的此错误消息。

session.upload_from_file("test.zip", "test", :content_type => "application/vnd.google-apps.folder")

“Mime-type application/vnd.google-apps.folder 无效。无法使用 Google mime-types 创建文件。

如果您能给我任何建议,我将不胜感激。

4

1 回答 1

10

这实际上非常简单。Google Drive 中的文件夹是google-drive-ruby gemGoogleDrive::Collection中的( http://gimite.net/doc/google-drive-ruby/GoogleDrive/Collection.html ) 。因此,您可以使用 google-drive-ruby 做的事情是首先创建一个文件,然后通过该方法将其添加到集合中。GoogleDrive::Collection#add(file)

这也模仿了 Google Drive 的实际工作方式:将文件上传到根集合/文件夹,然后将其添加到其他集合/文件夹。

这是我编写的一些示例代码。根据您提供的上下文,它应该可以工作 - 可能对您的特定用例进行一些小的调整:

# this example assumes the presence of an authenticated
# `GoogleDrive::Session` referenced as `session`
# and a file named `test.zip` in the same directory
# where this example is being executed

# upload the file and get a reference to the returned
# GoogleSpreadsheet::File instance
file = session.upload_from_file("test.zip", "test")

# get a reference to the collection/folder to which
# you want to add the file, via its folder name
folder = session.collection_by_title("my-folder-name")

# add the file to the collection/folder. 
# note, that you may add a file to multiple folders
folder.add(file)

此外,如果您只想创建一个新文件夹,而不在其中放置任何文件,则只需将其添加到根集合中:

session.root_collection.create_subcollection("my-folder-name")
于 2013-12-05T20:40:36.030 回答