使用Google Drive REST API v3和Angular 2上传并命名文件
我正在使用Angular 2中的Drive REST Api v3创建一个Google驱动器服务。大部分功能都已到位:查看文件、下载、创建等。。但是我找不到如何命名文件(无论是在创建文件还是更新文件时) 我正在使用以下文档页面:和。他们说文件名应该是请求主体的一部分。我的谷歌硬盘服务的相关代码如下使用Google Drive REST API v3和Angular 2上传并命名文件,rest,angular,google-api,google-drive-api,angular2-services,Rest,Angular,Google Api,Google Drive Api,Angular2 Services,我正在使用Angular 2中的Drive REST Api v3创建一个Google驱动器服务。大部分功能都已到位:查看文件、下载、创建等。。但是我找不到如何命名文件(无论是在创建文件还是更新文件时) 我正在使用以下文档页面:和。他们说文件名应该是请求主体的一部分。我的谷歌硬盘服务的相关代码如下 createFile(name :string, content :string) :Promise<Object> { let headers = new Headers({
createFile(name :string, content :string) :Promise<Object> {
let headers = new Headers({
'Content-Type': 'text/markdown',
'Authorization': 'Bearer ' + this.token,
'name': name //TODO name not working!
});
let options = new RequestOptions({ headers: headers }); // Create a request option
return this.http
.post('https://www.googleapis.com/upload/drive/v3/files' + '?uploadType=multipart', content, options)
.toPromise();
}
updateFile(id :string, content :string, name :string) :Promise<Object> {
let headers = new Headers({
'Content-Type': 'text/markdown',
'Authorization': 'Bearer ' + this.token,
'id': id,
'name': name //TODO name not working!
}); //generate headers
let options = new RequestOptions({ headers: headers }); // Create a request option
return this.http
.patch('https://www.googleapis.com/upload/drive/v3/files/' + id + '?uploadType=multipart', content, options)
.toPromise();
}
createFile(名称:string,内容:string):承诺{
让标题=新标题({
“内容类型”:“文本/标记”,
“授权”:“持有人”+此.token,
“名称”:名称//待办事项名称不起作用!
});
let options=newrequestoptions({headers:headers});//创建请求选项
返回此文件。http
.post('https://www.googleapis.com/upload/drive/v3/files“+”?uploadType=multipart',内容,选项)
.toPromise();
}
updateFile(id:string,content:string,name:string):承诺{
让标题=新标题({
“内容类型”:“文本/标记”,
“授权”:“持有人”+此.token,
“id”:id,
“名称”:名称//待办事项名称不起作用!
});//生成标题
let options=newrequestoptions({headers:headers});//创建请求选项
返回此文件。http
.patch('https://www.googleapis.com/upload/drive/v3/files/“+id+”?uploadType=multipart',内容,选项)
.toPromise();
}
总结文件的创建和更新很好(包括内容),但命名和重命名文件根本不起作用
谢谢您的帮助。您正在尝试使用http头设置名称。这是错误的。我无法理解您是如何认为这样做的,因此您需要返回并重新阅读驱动器API文档
简而言之,
name:“name”
应该是在请求体中传递的JSON对象,而不是http头中传递的JSON对象。尝试将名称放置在请求体中,而不是请求头中,如中所述:
请求主体
- 在请求正文中,提供具有以下属性的文件资源作为元数据。有关详细信息,请参阅上的文档
POST https://www.googleapis.com/drive/v3/files?key={YOUR_API_KEY}
{
"name": "My File"
}
答复:
200
{
"kind": "drive#file",
"id": "fileID",
"name": "My File"
}
还有一个相关的例子解释了如何通过API将文件插入到Google Drive
希望这能有所帮助。我也遇到了这个问题。我认为有3种解决方案:
多部分上载
。我自己被困在那里,没有发现如何在Angular 2+中为单独的请求头添加边界可恢复上传
。第一个请求是“设置元数据”(甚至不会创建空文件),并获取“特殊链接”,在该链接中发送上传实际文件的请求。这种方法还有其他一些特性,比如分块上传我希望它可能有用。什么是允许重命名文件的api?你是什么意思?谢谢,现在有意义了。