angular - 如何使用角度的发布请求将文件创建到 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;
})
);
}
}
显然,这不是我的目标
谢谢
解决方案
使用分段上传 https://developers.google.com/drive/v3/web/multipart-upload和文件元数据和实际文件的不同标题。我自己被困在那里,没有找到如何在 Angular 2+ 中为单独的请求标头添加边界
在两个请求中上传文件。首先创建带有元数据的空文件(响应将提供文件的 ID),其次是实际“更新”文件。
使用可恢复上传。首先请求“设置元数据”(甚至不会创建空文件)并获得“特殊链接”发送请求以上传实际文件。而且这种方法还有一些其他的功能,比如分块上传。https://developers.google.com/drive/v3/web/resumable-upload
这是在 Angular 2 和 DRIVE REST API V3 中实现可恢复上传的另一个问题的链接
推荐阅读
- javascript - javascript中this关键字的默认绑定?
- audio - 修改一些代码以将 ffmpeg / concat 不同的音频格式转换为 1 个长 WAV 文件
- reactjs - 为什么 setState 不改变值?
- kubernetes - GCP 上的 Kubernetes 集群缺少编辑权限
- sql - SQL - 将时间序列事件转换为开/关对(处理可能丢失的开或关)
- python - Python请求模块不遵循重定向文件下载
- javascript - javascript中类内的引用类型未按预期工作
- javascript - 如何用 js 定义数学值,然后将这些值相乘?
- iis - VS 2017 - Web 应用程序项目 [MyProject] 配置为使用 IIS。您无权访问 IIS 配置文件
- jquery - 带有 django 的 JQuery AJAX 获取 csrf 错误 403