我正在尝试使用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';
请有人能告诉我这里缺少什么吗?
答案 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();