2016-08-22 87 views

回答

1

我想通些什麼了,如果你刪除使用API​​的服務帳戶(因爲服務帳戶是該文件的所有者)中的文件,它將從訪問該文件的用戶的所有共享驅動器部分中刪除。感謝@ some1,@MrRebot和@Hadar Ben David幫助我得出這個結論。

1

由於您無法控制帳戶,我不明白您如何實際刪除該帳戶擁有的文件。只要所有者不刪除它,該文件就會保留在那裏。

https://support.google.com/drive/answer/2375102

將一個文件中的垃圾

要從驅動器上刪除一個文件,你可以把它 在垃圾桶。您的文件將保留在那裏,直到您清空垃圾。

如果您是該文件的所有者,則其他人可以查看該文件,直到您永久刪除該文件。 如果您不是所有者,即使您清空垃圾桶,其他人也可以看到 文件。

1

這與用戶創建文件(無過期日期)相同。要知道是否被刪除等任何更改,您可以檢查Change Feedretrieve the changes

變化:列表

  • 列出的變化給用戶。

檢測更改

  • 對於需要不斷修改文件的跟蹤谷歌雲端硬盤應用中,Changes collection提供了一個有效的方法來檢測對所有文件,包括那些已與用戶共享。該集合通過提供每個文件的當前狀態來工作,當且僅當文件在給定時間點以後發生了變化。

您可以使用刪除因爲它是文件的所有者的服務帳戶文件。您也可以查看此SO question,瞭解如何檢查文件/文件夾是否被刪除。

1

這些文件留在那裏,直到你自己刪除它們。 您可以隨時從谷歌驅動器API(我使用V3)獲取文件列表,並使用它們的ID獲取文件列表並刪除您想要的任何文件。您還無法通過網絡界面進行操作。

下面是一個例子是如何得到的文件列表C#:

public List<Google.Apis.Drive.v3.Data.File> GetFilesList(string SearchQ = null) 
    { 
     List<Google.Apis.Drive.v3.Data.File> ListOfFiles = new List<Google.Apis.Drive.v3.Data.File>(); 

     FilesResource.ListRequest listRequest = _CurrentDriveService.Files.List(); 
     listRequest.PageSize = 1000; 
     if (SearchQ != null) 
     { 
      listRequest.Q = SearchQ; //("'PARENT_ID' in parents"); 
     } 
     listRequest.Fields = "nextPageToken, files(id, name,parents,mimeType,size,capabilities,modifiedTime,webViewLink,webContentLink)"; 
     FileList fileFeedList = listRequest.Execute(); 

     while (fileFeedList != null) 
     { 
      foreach (File file in fileFeedList.Files) 
      { 
       ListOfFiles.Add(file); 
      } 

      if (fileFeedList.NextPageToken == null) 
      { 
       break; 
      } 

      listRequest.PageToken = fileFeedList.NextPageToken; 

      fileFeedList = listRequest.Execute(); 

     } 
     return ListOfFiles; 

    } 

以及如何刪除特定文件:

public bool DeleteFileFromDrive(string FileID) // only to be used when you are the owner of the file. Otherwise it will have no effect. 
    { 
     try 
     { 

      FilesResource.GetRequest gr = new FilesResource.GetRequest(_CurrentDriveService, FileID); 
      var FileData = gr.Execute(); 
      if (FileData.MimeType == GoogleDriveMimeTypes.GetFolderMimeTypeString()) 
      { 
       var filesInFolder = GetFilesList("'" + FileID + "' in parents"); 
       if (filesInFolder.Count > 0) 
       { 
        // directory is not empty 
        return false; 
       } 
      } 

      var requestD = _CurrentDriveService.Files.Delete(FileID); 

      requestD.Execute(); 
      return true; 
     } 
     catch (Exception e) 
     { 
      System.Diagnostics.Debug.WriteLine(e.Message); 
      return false; 
     } 

    } 
+0

感謝@哈達爾本大衛您的詳細回覆。我知道這些電話,但是閱讀所有這些我應該確定,如果不刪除,文件將無限期地存儲在服務帳戶中,除非存儲空間不足。正確?如果該文件由服務帳戶共享,則該文件也會存儲到共享用戶的驅動器中。從服務帳戶刪除時,該文件是否也會從共享用戶的帳戶中刪除? – Atihska

+0

@Atihska,服務賬戶和「常規」賬戶是兩個獨立的實體。您可以在兩個帳戶中獨立存儲文件。另外,Web UI無法訪問服務帳戶。所以,如果你通過谷歌API上傳文件,你也必須通過API刪除它們。如果您決定在他們之間共享信息,他們都會遵守Google的共享政策:文件所有者完全控制它,並且該文件將佔用所有者帳戶中的磁盤空間。只有所有者才能刪除該文件。編輯器可以刪除他自己對該文件的訪問權限,但不能刪除文件本身。 –

+0

@Atihska,目前服務帳戶的配額爲15GB,即使升級常規帳戶也無法升級。 –

相關問題