文件何时从Google云端硬盘服务帐户中删除?

时间:2016-08-22 23:32:41

标签: google-drive-api service-accounts

我想知道Google云端硬盘服务帐户中的文件有多长时间了?

我无法找到其默认的到期时间。由于我无法控制帐户,我怎么知道该文件已被删除或无法解决,我是否必须自己从服务帐户中删除这些文件?

4 个答案:

答案 0 :(得分:2)

由于您无法控制该帐户,因此我看不到您如何实际删除该帐户所拥有的文件。只要所有者不删除它,文件就会保留在那里。

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

  

将文件放入垃圾箱

     

要从云端硬盘中删除文件,您可以将其放入   在垃圾桶里。您的文件将保留在那里,直到您清空垃圾。

     

如果您是该文件的所有者,则其他人可以查看该文件   永久删除该文件。 如果您不是所有者,其他人可以看到   即使您清空垃圾箱也要存档。

答案 1 :(得分:1)

用户创建文件的方式相同(没有过期日期)。要了解任何已删除的更改,您可以查看Change Feedretrieve the changes

  

更改:列表

     
      
  • 列出用户的更改。
  •   
     

检测更改

     
      
  • 对于需要跟踪文件更改的Google云端硬盘应用,Changes collection提供了一种有效的方法来检测所有文件的更改,包括已与用户共享的文件。该集合通过提供每个文件的当前状态来工作,当且仅当文件自给定时间点以来已更改时。
  •   

您可以删除文件使用服务帐户,因为它是文件的所有者。您还可以查看此SO question,了解如何检查文件/文件夹是否已删除。

答案 2 :(得分:1)

这些文件一直存在,直到您自己删除它们为止。 您始终可以从google drive 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;
        }

    }

答案 3 :(得分:1)

我想到的是,如果您使用API​​从服务帐户中删除该文件(并且因为服务帐户是该文件的所有者),它将从访问该文件的用户的所有共享驱动器部分中删除。感谢@ some1,@ MrRebot和@Hadar Ben David帮助我得出这个结论。