簡體   English   中英

使用 Google Drive REST API v3 和 Angular 2 上傳和命名文件

[英]Upload and Name a File Using Google Drive REST API v3 and Angular 2

我正在使用 Angular 2 中的 Drive REST Api v3 創建 Google Drive 服務。大部分功能都已到位:查看文件、下載、創建等。但我找不到如何命名文件(無論是在創建文件時或更新)。

我正在使用以下文檔頁面: createupdate 他們說文件名應該是請求正文的一部分。 我的 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個解決方案:

  1. 使用multipart upload https://developers.google.com/drive/v3/web/multipart-upload為文件元數據和實際文件提供不同的標頭。 我自己被困在那里,沒有找到如何在 Angular 2+ 中為單獨的請求標頭添加邊界

  2. 在兩個請求中上傳文件。 首先創建帶有元數據的空文件(響應將提供文件的 id),然后實際“更新”文件。

  3. 使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM