使用Google Drive API的Http多部分请求

时间:2014-05-22 11:21:28

标签: google-api http-post google-drive-api http-put

我正在尝试使用Google Drive API发送HTTP多部分请求,以便在Google云端硬盘中插入文件。

我关注以下链接:Multipart upload

但是,我得到Bad request error

下面是我使用上面的文档链接创建的请求字符串:

    String content = '\r\n--' + boundary + '\r\n';
    content +='Content-Type: '+'application/json; charset=UTF-8'+'\r\n\r\n';
    content +='{' + '\r\n';
    content +='"title": "My File"'+'\r\n';
    content +='}'+'\r\n\r\n';
    content += '--'+boundary + '\r\n';
    content +='Content-Type: '+'text/plain'+'\r\n';
    content += EncodingUtil.base64Encode(b)+'\r\n';
    content += '-'+boundary+'-\r\n';

请有人能告诉我这里缺少什么吗?

2 个答案:

答案 0 :(得分:1)

我也遇到了麻烦, 但是如果你看一下github上google驱动API的代码: Github Drive API

请求参数接受媒体对象,该对象可以具有正文和mimeType。

我正在使用服务帐户,这样您就可以直接将文件上传到云端硬盘了。

 auth.getApplicationDefault(function(err, authClient) {
  if (err) {
    console.log('Authentication failed because of ', err);
    return;
  }
  if (authClient.createScopedRequired && authClient.createScopedRequired()) {
   var scopes = ['https://www.googleapis.com/auth/drive'];
   authClient = authClient.createScoped(scopes);
  }
  var request = {
  project: "YOUR_PROJECT",
  auth: authClient,
  resource: {
    parents: ['blah']
  },
  media: {
    body: 'hi',
    mimeType: 'text/plain'
  }
 };
 drive.files.create(request, function(err, result) {
    if (err) {
      console.log(err);
    } else {
      console.log(result);
    }
  });
});

答案 1 :(得分:0)

我也有这个问题,在尝试了一些改变后,我终于达到了一个有效的例子:

标题:

--foo_bar_baz
Content-Type: application/json; charset=UTF-8

{
    "title": "My File"
}

--foo_bar_baz
Content-Type: text/txt

JPEG data
--foo_bar_baz--

记得添加boundary =" foo_bar_baz"在Content-Type字段中

正文:

$("#user-input-textbox").hide();