首页 > 解决方案 > 如何使用角度的发布请求将文件创建到 Google Drive?

问题描述

我正在尝试以角度创建文件,但我无法设置示例中的参数name

@Injectable({
  providedIn: 'root'
})
export class DriveService {

  constructor(private http: HttpClient) {
  }

  token: string = localStorage.getItem('tokenGoogle');

  headers = new HttpHeaders()
    .set('Authorization', `Bearer ${this.token}`)
    .set('Accept', `application/json`)
    .set('Content-Type', `application/json`);

  creaFileDrive(nome: string): Observable<DriveResultFile> {

    return this.http.post<DriveResultFile>('https://www.googleapis.com/upload/drive/v3/files?key=AIzXXXXXXXXXXXXXXXXXX&uploadType=multipart',
      {name: 'pata'}, // HERE THE NAME DON'T SET
      {headers: this.headers}).pipe(
      map(x => {
        return x;
      })
    );
  }
}

显然,这不是我的目标

这是结果

谢谢

标签: angulargoogle-drive-api

解决方案


  1. 使用分段上传 https://developers.google.com/drive/v3/web/multipart-upload和文件元数据和实际文件的不同标题。我自己被困在那里,没有找到如何在 Angular 2+ 中为单独的请求标头添加边界

  2. 在两个请求中上传文件。首先创建带有元数据的空文件(响应将提供文件的 ID),其次是实际“更新”文件。

  3. 使用可恢复上传。首先请求“设置元数据”(甚至不会创建空文件)并获得“特殊链接”发送请求以上传实际文件。而且这种方法还有一些其他的功能,比如分块上传。https://developers.google.com/drive/v3/web/resumable-upload

这是在 Angular 2 和 DRIVE REST API V3 中实现可恢复上传的另一个问题的链接

Angular 2+ HTTP POST 和 GDrive API。带名称的可恢复文件上传


推荐阅读