2016-08-22 66 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,即使升级常规帐户也无法升级。 –

相关问题