使用 cURL 上传到 google 驱动器并设置名称和位置
Upload to google drive using cURL and set name and location
我正在尝试使用 cURL 将文件上传到 Google 驱动器。文件已上传,但仅在根目录中并且始终命名为 "Untitled".
我的基本脚本如下所示:
curl
--silent
--request POST
--data-binary "@c:\temp\myfile.jpg"
-H "Authorization: Bearer abcdefg"
-H "Content-Type: image/jpeg
"https://www.googleapis.com/upload/drive/v2/files?uploadType=media"
使用这些 link 作为参考:
Upload file to Drive and set file name
https://gist.github.com/deanet/3427090
https://developers.google.com/drive/web/manage-uploads
我注意到这可能是必需的,它在 Google 的文档中定义(参见 link)
-H "Slug: myfile3.jpg"
但这不管我放不放都没有影响
使用 cURL 帮助,我注意到这可能会有帮助:
-OL MyFolder\myfile2.jpeg
...但这也没有效果。
我还注意到可能需要字符串 {title:file title},但我不知道如何使用 cURL 将其嵌入。基于上面的 links,我认为我可以将它附加在 headers 之一的末尾,就在 body 之前。所以,我想变聪明,将 content-type 规范更改为:
-H "Content-Type: image/jpeg {"title":"myfile4"}"
...但是也没有效果
奇怪的是,Google自己的文档是不正确的,所以,我怀疑他们曾经使用的方法现在已经过时了。 link 中的授权规范有误。您必须使用 Bearer 令牌,而不是 "GoogleLogin"。我提到了这个 link:
https://developers.google.com/gdata/articles/using_cURL
我的整个脚本是这样的。它上传了,但是,不是我想要的,也没有按照我想要的方式命名。
curl
--silent
--request POST
--data-binary "@c:\temp\myfile.jpg"
-OL MyFolder\myfile2.jpeg
-H "Slug: myfile3.jpg"
-H "Authorization: Bearer abcdefg"
-H "Content-Type: image/jpeg {"title":"myfile4"}"
"https://www.googleapis.com/upload/drive/v2/files?uploadType=media"
我意识到我在一个地方指定了 "myfile2.jpg",在另一个地方指定了 "myfile3.jpg",在另一个地方指定了 "myfile4"。无论是匹配还是指定都没有区别。
任何帮助将不胜感激!
您的问题是您正在处理没有元数据的媒体内容。你有两条前进的道路:-
- POST 用于创建空文件并捕获其文件 ID 的元数据。然后使用文件 ID 进行内容上传
- 创建一个包含元数据和内容的多部分 MIME 正文 POST
就我个人而言,我会选择选项 1,因为它将两个问题分开,但两者同样有效。这些选项在 https://developers.google.com/drive/web/manage-uploads
中进行了描述
我正在尝试使用 cURL 将文件上传到 Google 驱动器。文件已上传,但仅在根目录中并且始终命名为 "Untitled".
我的基本脚本如下所示:
curl
--silent
--request POST
--data-binary "@c:\temp\myfile.jpg"
-H "Authorization: Bearer abcdefg"
-H "Content-Type: image/jpeg
"https://www.googleapis.com/upload/drive/v2/files?uploadType=media"
使用这些 link 作为参考:
Upload file to Drive and set file name
https://gist.github.com/deanet/3427090
https://developers.google.com/drive/web/manage-uploads
我注意到这可能是必需的,它在 Google 的文档中定义(参见 link)
-H "Slug: myfile3.jpg"
但这不管我放不放都没有影响
使用 cURL 帮助,我注意到这可能会有帮助:
-OL MyFolder\myfile2.jpeg
...但这也没有效果。
我还注意到可能需要字符串 {title:file title},但我不知道如何使用 cURL 将其嵌入。基于上面的 links,我认为我可以将它附加在 headers 之一的末尾,就在 body 之前。所以,我想变聪明,将 content-type 规范更改为:
-H "Content-Type: image/jpeg {"title":"myfile4"}"
...但是也没有效果
奇怪的是,Google自己的文档是不正确的,所以,我怀疑他们曾经使用的方法现在已经过时了。 link 中的授权规范有误。您必须使用 Bearer 令牌,而不是 "GoogleLogin"。我提到了这个 link:
https://developers.google.com/gdata/articles/using_cURL
我的整个脚本是这样的。它上传了,但是,不是我想要的,也没有按照我想要的方式命名。
curl
--silent
--request POST
--data-binary "@c:\temp\myfile.jpg"
-OL MyFolder\myfile2.jpeg
-H "Slug: myfile3.jpg"
-H "Authorization: Bearer abcdefg"
-H "Content-Type: image/jpeg {"title":"myfile4"}"
"https://www.googleapis.com/upload/drive/v2/files?uploadType=media"
我意识到我在一个地方指定了 "myfile2.jpg",在另一个地方指定了 "myfile3.jpg",在另一个地方指定了 "myfile4"。无论是匹配还是指定都没有区别。
任何帮助将不胜感激!
您的问题是您正在处理没有元数据的媒体内容。你有两条前进的道路:-
- POST 用于创建空文件并捕获其文件 ID 的元数据。然后使用文件 ID 进行内容上传
- 创建一个包含元数据和内容的多部分 MIME 正文 POST
就我个人而言,我会选择选项 1,因为它将两个问题分开,但两者同样有效。这些选项在 https://developers.google.com/drive/web/manage-uploads
中进行了描述