Javascript GoogleDriveAPI使用curl调用创建文件而不是文件夹

Javascript GoogleDriveAPI使用curl调用创建文件而不是文件夹,javascript,rest,curl,google-drive-api,Javascript,Rest,Curl,Google Drive Api,我已经能够获得access\u令牌,并且我还能够点击对Google Drive的API调用 curl -v -H 'Authorization: Bearer ya29.GltQBdS3y-QkCbKhO5K5pO19bBPaHh-KXZJw2ftw2tyxqSXEAYo06FQfHPSQmFtuN7XAlzb9k7cQw2ZkyBsKDcpX91_N3LObEw_Zgj8OvpMwCCPNK1UDjT' -H 'Content-Type: application/json' -d '{"upl

我已经能够获得
access\u令牌
,并且我还能够点击对Google Drive的
API
调用

curl -v -H 'Authorization: Bearer ya29.GltQBdS3y-QkCbKhO5K5pO19bBPaHh-KXZJw2ftw2tyxqSXEAYo06FQfHPSQmFtuN7XAlzb9k7cQw2ZkyBsKDcpX91_N3LObEw_Zgj8OvpMwCCPNK1UDjT' -H 'Content-Type: application/json' -d '{"uploadType": "simple", "title": "mb", "mimeType": "application/vnd.google-apps.folder"}' https://www.googleapis.com/upload/drive/v3/files
但是,在谷歌硬盘上创建的是一个文件,文件内容是我的请求主体

使用
curl
的整个有效负载如下所示

*   Trying 2607:f8b0:400a:800::200a...
* TCP_NODELAY set
* Connected to www.googleapis.com (2607:f8b0:400a:800::200a) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-ECDSA-CHACHA20-POLY1305
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=California; L=Mountain View; O=Google LLC; CN=*.googleapis.com
*  start date: Jun 18 08:35:41 2019 GMT
*  expire date: Sep 10 08:16:00 2019 GMT
*  subjectAltName: host "www.googleapis.com" matched cert's "*.googleapis.com"
*  issuer: C=US; O=Google Trust Services; CN=Google Internet Authority G3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x7fcc1c006600)
> POST /upload/drive/v3/files HTTP/2
> Host: www.googleapis.com
> User-Agent: curl/7.54.0
> Accept: */*
> Authorization: Bearer ya29.GltQBzZdS3y-QkCbO5K5pO19bBPaHh-KXZJw2ftw2tyxqSXEAYo06FQ6QmFtuN7XAlzb9k7cQw2ZkUZkyBscpX91_N3LObEw_Zgj8OvpMwCCPNK1UDjT
> Content-Type: application/json
> Content-Length: 89
>
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
* We are completely uploaded and fine
< HTTP/2 200
< x-guploader-uploadid: AEnB2UpR0hclmVI75f-2hK49hCe3OpA3dkW7GR5PCgd4DgOOkeL2KSoVQDgC-bThMDzXvqcYTaWU3St1pruugvcpst9yaslA
< vary: Origin
< vary: X-Origin
< content-type: application/json; charset=UTF-8
< cache-control: no-cache, no-store, max-age=0, must-revalidate
< pragma: no-cache
< expires: Mon, 01 Jan 1990 00:00:00 GMT
< date: Thu, 25 Jul 2019 15:23:02 GMT
< content-length: 124
< server: UploadServer
< alt-svc: quic=":443"; ma=2592000; v="46,43,39"
<
{
 "kind": "drive#file",
 "id": "1MZ4s2ikDqTU5tu-5LDuyMx84TwHgw7",
 "name": "Untitled",
 "mimeType": "application/json"
}
* Connection #0 to host www.googleapis.com left intact
*正在尝试2607:f8b0:400a:800::200a。。。
*TCP_节点集
*已连接到www.googleapis.com(2607:f8b0:400a:800::200a)端口443(#0)
*阿尔卑斯山,提供h2
*ALPN,提供http/1.1
*密码选择:全部:!出口:!出口40:!出口56:!阿努尔:!低:!RC4:@强度
*已成功设置证书验证位置:
*CAfile:/etc/ssl/cert.pem
卡帕斯:没有
*TLSv1.2(输出),TLS握手,客户端问候(1):
*TLSv1.2(IN)、TLS握手、服务器hello(2):
*TLSv1.2(IN),TLS握手,证书(11):
*TLSv1.2(IN)、TLS握手、服务器密钥交换(12):
*TLSv1.2(IN),TLS握手,服务器完成(14):
*TLSv1.2(输出)、TLS握手、客户端密钥交换(16):
*TLSv1.2(OUT),TLS更改密码,客户端hello(1):
*TLSv1.2(输出),TLS握手,完成(20):
*TLSv1.2(IN),TLS更改密码,客户端hello(1):
*TLSv1.2(IN),TLS握手,完成(20):
*使用TLSv1.2/ECDHE-ECDSA-CHACHA20-POLY1305的SSL连接
*ALPN,服务器接受使用h2
*服务器证书:
*主题:C=美国;ST=加利福尼亚州;L=山景;O=谷歌有限责任公司;CN=*.googleapis.com
*开始日期:6月18日08:35:41格林尼治标准时间2019
*到期日期:9月10日08:16:00 2019 GMT
*主题名称:主机“www.googleapis.com”匹配证书“*.googleapis.com”
*发行人:C=美国;O=谷歌信托服务;CN=谷歌互联网管理局G3
*SSL证书验证正常。
*使用HTTP2,服务器支持多用途
*连接状态已更改(HTTP/2已确认)
*升级后正在将流缓冲区中的HTTP/2数据复制到连接缓冲区:len=0
*使用流ID:1(易处理0x7fcc1c006600)
>POST/upload/drive/v3/files HTTP/2
>主持人:www.googleapis.com
>用户代理:curl/7.54.0
>接受:*/*
>授权:持票人ya29.GltQBzZdS3y-QkCbO5K5pO19bBPaHh-KXZJw2ftw2tyxqSXEAYo06FQ6QmFtuN7XAlzb9k7cQw2ZkUZkyBscpX91
>内容类型:application/json
>内容长度:89
>
*连接状态已更改(最大并发流已更新)!
*我们是完全上传和罚款
我在做什么


谢谢

为什么你有谷歌文件夹mime类型

“mimeType”:“application/vnd.google apps.folder”}”

从Excel上载和转换为电子表格的示例 curl-X POST-sSL\ -H“授权:持有人[您的访问令牌]”\ -F“元数据={\ 名称:“[谷歌硬盘上的文件名]”\ mimeType:'application/vnd.google apps.spreadsheet'\ };type=application/json;charset=UTF-8“\ -F“文件=@[您的Excel文件];类型=应用程序/vnd.ms Excel”\ “

  • 您希望使用curl命令在Google驱动器中创建新文件夹
  • 您已经能够使用驱动器API。
    • 您的访问令牌可用于POST方法
如果我的理解是正确的,这次修改怎么样

修改点:
  • 创建新文件夹时,您可以使用
    https://www.googleapis.com/drive/v3/files
    作为端点
  • 使用驱动器API v3时,可以通过
    name
    属性设置文件夹名称
当上述修改反映到curl命令时,它将变成如下所示

修改的curl命令: 参考:

如果我误解了你的问题,而这不是你想要的结果,我很抱歉。

这帮了大忙!谢谢你,塔奈克。2个不正确的片段为-1。使用端点(我不知道选择哪一个)和2。在有效负载中使用
name
而不是
title
。当我修好它们时,它开始工作了!不相关的问题,您是否知道如何在
访问令牌
过期时刷新它们?@daydreamer感谢您的回复。我很高兴你的问题解决了。关于刷新访问令牌,当您拥有刷新令牌时,您可以刷新访问令牌。但此时,访问令牌的字符串已更改,请小心此操作。关于如何使用刷新令牌刷新访问令牌,此线程可能很有用。谢谢@Tanaike,我会试试看!
curl \
  -H 'Authorization: Bearer ### your access token ###' \
  -H 'Content-Type: application/json' \
  -d '{"name": "mb", "mimeType": "application/vnd.google-apps.folder"}' \
  https://www.googleapis.com/drive/v3/files