[英]Upload and Name a File Using Google Drive REST API v3 and Angular 2
我正在使用 Angular 2 中的 Drive REST Api v3 創建 Google Drive 服務。大部分功能都已到位:查看文件、下載、創建等。但我找不到如何命名文件(無論是在創建文件時或更新)。
我正在使用以下文檔頁面: create和update 。 他們說文件名應該是請求正文的一部分。 我的 Google Drive 服務的相關代碼如下。
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();
}
總結正在創建和更新的文件(包括內容),但命名和重命名文件根本不起作用。
謝謝你的幫助。
我也遇到過這個問題。 我認為有3個解決方案:
使用multipart upload
https://developers.google.com/drive/v3/web/multipart-upload為文件元數據和實際文件提供不同的標頭。 我自己被困在那里,沒有找到如何在 Angular 2+ 中為單獨的請求標頭添加邊界
在兩個請求中上傳文件。 首先創建帶有元數據的空文件(響應將提供文件的 id),然后實際“更新”文件。
使用resumable upload
。 第一個請求“設置元數據”(甚至不會創建空文件)並獲取“特殊鏈接”發送請求以上傳實際文件。 這種方法還有一些其他功能,比如分塊上傳。 https://developers.google.com/drive/v3/web/resumable-upload
這是在 Angular 2 和 DRIVE REST API V3 中實現可恢復上傳的另一個問題的鏈接
Angular 2+ HTTP POST 和 GDrive API。 帶名稱的可恢復文件上傳
我希望它可能有用。
您正在嘗試使用 http 標頭設置名稱。 這是錯誤的。 我無法開始理解您認為這是如何做到的,因此您需要返回並重新閱讀 Drive API 文檔。
簡而言之, name: "name"
應該是在請求正文中傳遞的 JSON 對象,而不是在 http 標頭中。
嘗試將名稱放在請求正文中,而不是放在文件中所述的請求標頭中 :創建:
請求正文
- 在請求正文中,提供具有以下屬性的 Files 資源作為元數據。 有關更多信息,請參閱有關媒體上傳的文檔。
要對其進行測試,請嘗試使用API Explorer來幫助您以交互方式探索各種 Google API。
樣品請求:
POST https://www.googleapis.com/drive/v3/files?key={YOUR_API_KEY}
{
"name": "My File"
}
回復:
200
{
"kind": "drive#file",
"id": "fileID",
"name": "My File"
}
還有一個相關的SO 帖子解釋了如何通過 API 將文件插入到 Google Drive。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.