Beispiel #1
0
        private static void backgroundWorker1_DoWork() //подключение к диску и загрузка файлов
        {                                              // object sender, DoWorkEventArgs e
            UserCredential credential;

            try
            {
                //download = new List<string>();//коллеция ссылок для загрузки
                FileStream str = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read);
                using (FileStream stream =
                           new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))// создание потока для чтения client_secret.json
                {
                    string credPath = System.Environment.GetFolderPath(
                        System.Environment.SpecialFolder.Personal);
                    credPath = Path.Combine(credPath, ".credentials/drive-dotnet-quickstart.json");//путь к файлу управления подключением

                    credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                        GoogleClientSecrets.Load(stream).Secrets,
                        Scopes,
                        GoogleClientSecrets.Load(str).Secrets.ClientId,
                        CancellationToken.None,
                        new FileDataStore(credPath, true)).Result;
                    var service = new Google.Apis.Drive.v3.DriveService(new BaseClientService.Initializer()
                    {
                        HttpClientInitializer = credential,
                        ApplicationName       = ApplicationName,
                    });

                    str.Close();

                    // Define parameters of request.
                    Google.Apis.Drive.v3.FilesResource.ListRequest listRequest = service.Files.List();
                    listRequest.PageSize = 400;
                    listRequest.Fields   = "nextPageToken, files(id, webViewLink, webContentLink, name, size, mimeType)";//требуемые свойства загружаемых файлов(можно убрать лишнее или добавить требуемое)

                    // List files.
                    IList <Google.Apis.Drive.v3.Data.File> files = listRequest.Execute()
                                                                   .Files;
                    Console.WriteLine("Files:");
                    if (files != null && files.Count > 0)
                    {
                        foreach (var file in files)
                        {
                            if (file.Name == "базы" || file.Name == "нормативы")
                            {
                                continue;
                            }
                            Console.WriteLine("  {0} (Size: {1} КБ)", file.Name, file.Size / 1000.0);
                        }
                    }
                    else
                    {
                        Console.WriteLine("No files found.");
                    }
                    Console.ReadLine();
                }
            }
            catch (Exception x)
            { Console.WriteLine(x.Message); Console.Read(); }
            Console.ReadLine();
        }
Beispiel #2
0
        //public static void FileUploadInFolder(string folderId, HttpPostedFileBase file)
        //{
        //    if (file != null && file.ContentLength > 0)
        //    {
        //        Google.Apis.Drive.v3.DriveService service = GetService_v3();

        //        string path = Path.Combine(HttpContext.Current.Server.MapPath("~/GoogleDriveFiles"),
        //        Path.GetFileName(file.FileName));
        //        file.SaveAs(path);

        //        var FileMetaData = new Google.Apis.Drive.v3.Data.File()
        //        {
        //            Name = Path.GetFileName(file.FileName),
        //            MimeType = MimeMapping.GetMimeMapping(path),
        //            Parents = new List<string>
        //            {
        //                folderId
        //            }
        //        };

        //        Google.Apis.Drive.v3.FilesResource.CreateMediaUpload request;
        //        using (var stream = new System.IO.FileStream(path, System.IO.FileMode.Open))
        //        {
        //            request = service.Files.Create(FileMetaData, stream, FileMetaData.MimeType);
        //            request.Fields = "id";
        //            request.Upload();
        //        }
        //        var file1 = request.ResponseBody;
        //    }
        //}
        public static List <GoogleDriveFiles> GetDriveFiles()
        {
            Google.Apis.Drive.v3.DriveService service = GetService_v3();

            // Define parameters of request.
            Google.Apis.Drive.v3.FilesResource.ListRequest FileListRequest = service.Files.List();
            FileListRequest.Fields = "nextPageToken, files(createdTime, id, name, size, version, trashed, parents)";

            // List files.
            IList <Google.Apis.Drive.v3.Data.File> files = FileListRequest.Execute().Files;
            List <GoogleDriveFiles> FileList             = new List <GoogleDriveFiles>();

            if (files != null && files.Count > 0)
            {
                foreach (var file in files)
                {
                    GoogleDriveFiles File = new GoogleDriveFiles
                    {
                        Id          = file.Id,
                        Name        = file.Name,
                        Size        = file.Size,
                        Version     = file.Version,
                        CreatedTime = file.CreatedTime,
                        Parents     = file.Parents
                    };
                    FileList.Add(File);
                }
            }
            return(FileList);
        }
Beispiel #3
0
        /// &lt;summary&gt;
        /// returns all files from drive
        /// &lt;/summary&gt;
        /// &lt;returns&gt;&lt;/returns&gt;
        public List <GoogleDriveFile> GetDriveFiles()
        {
            Google.Apis.Drive.v3.DriveService service = GetService();
            // Define parameters of request.
            Google.Apis.Drive.v3.FilesResource.ListRequest FileListRequest = service.Files.List();

            // for getting folders only.
            //FileListRequest.Q = "mimeType=&#39;application/vnd.google-apps.folder&#39;";
            FileListRequest.Fields = "nextPageToken, files(*)";
            // List files.
            IList <Google.Apis.Drive.v3.Data.File> files = FileListRequest.Execute().Files;
            List <GoogleDriveFile> FileList = new List <GoogleDriveFile>();

            // For getting only folders
            // files = files.Where(x =&gt; x.MimeType == &quot;application/vnd.google-apps.folder ").ToList();
            if (files != null && files.Count > 0)
            {
                foreach (var file in files)
                {
                    GoogleDriveFile File = new GoogleDriveFile
                    {
                        Id          = file.Id,
                        Name        = file.Name,
                        Size        = file.Size,
                        Version     = file.Version,
                        CreatedTime = file.CreatedTime,
                        Parents     = file.Parents,

                        MimeType = file.MimeType
                    };
                    FileList.Add(File);
                }
            }
            return(FileList);
        }
Beispiel #4
0
        protected ImageFilter(Google.Apis.Drive.v3.DriveService service, string filename)
        {
            Google.Apis.Drive.v3.FilesResource.ListRequest findFilenameRequest = service.Files.List();
            findFilenameRequest.Fields = "files(id)";
            findFilenameRequest.Q      = "name = '" + filename + "'";
            IList <Google.Apis.Drive.v3.Data.File> filesList = findFilenameRequest.Execute().Files;

            TargetDirectoryId = filesList[0].Id;
        }
Beispiel #5
0
        public static string GetSharableLink(string fileId)
        {
            string link = "";

            Google.Apis.Drive.v3.DriveService service = GetService_v3();
            // Define parameters of request.
            Google.Apis.Drive.v3.FilesResource.ListRequest FileListRequest = service.Files.List();
            FileListRequest.Fields = "files(id, webViewLink)";
            // List files.
            IList <Google.Apis.Drive.v3.Data.File> files = FileListRequest.Execute().Files;

            link = files.Where(x => x.Id == fileId).FirstOrDefault().WebViewLink;
            return(link);
        }
        // Display list audio

        public static List <GoogleDriveFiles> Index()
        {
            Google.Apis.Drive.v3.DriveService service = GetService();

            // define parameters of request.
            Google.Apis.Drive.v3.FilesResource.ListRequest FileListRequest = service.Files.List();

            //listRequest.PageSize = 10;
            //listRequest.PageToken = 10;
            FileListRequest.Fields = "nextPageToken, files(createdTime, id, name, size, version, trashed, parents)";

            //get file list.
            IList <Google.Apis.Drive.v3.Data.File> files = FileListRequest.Execute().Files;
            List <GoogleDriveFiles> FileList             = new List <GoogleDriveFiles>();

            if (files != null && files.Count > 0)
            {
                foreach (var file in files)
                {
                    GoogleDriveFiles File = new GoogleDriveFiles
                    {
                        Id          = file.Id,
                        Name        = file.Name,
                        Size        = file.Size,
                        Version     = file.Version,
                        CreatedTime = file.CreatedTime,
                        Parents     = file.Parents
                    };


                    string path = Path.Combine(HttpContext.Current.Server.MapPath("~"), Path.GetFileName(file.Name));



                    var fileMETA = new Google.Apis.Drive.v3.Data.File()
                    {
                        Name     = file.Name,
                        MimeType = MimeMapping.GetMimeMapping(path)
                    };
                    if (fileMETA.MimeType == "audio/mpeg" || fileMETA.MimeType == "audio/wav")
                    {
                        FileList.Add(File);
                    }
                }
            }
            return(FileList);
        }
Beispiel #7
0
        public static List <Google.Apis.Drive.v3.Data.File> GetDriveFiles2(string folderID)
        {
            Google.Apis.Drive.v3.DriveService service = GetGoogleService("service");

            Google.Apis.Drive.v3.FilesResource.ListRequest listRequest = service.Files.List();
            //listRequest.Q = "'" + folderID + "' in parents";
            listRequest.Q        = "mimeType='application/vnd.google-apps.folder'";
            listRequest.PageSize = 10;
            listRequest.Fields   = "nextPageToken, files(id, name)";

            IList <Google.Apis.Drive.v3.Data.File> files = listRequest.Execute().Files;
            var counter = files.Count();



            return(files.ToList());
        }
        //get link file
        public static string GetLinkFile(string filename)
        {
            string linkdrive = "";

            Google.Apis.Drive.v3.DriveService service = GetService();
            // Define parameters of request.
            Google.Apis.Drive.v3.FilesResource.ListRequest request = service.Files.List();
            request.Q = "name='" + filename + "'";
            var result = request.Execute().Files;

            if (result != null)
            {
                foreach (var item in result)
                {
                    linkdrive += "https://drive.google.com/file/d/" + item.Id;
                    break;
                }
            }
            return(linkdrive);
        }
        // check Folder name exist or note in root
        public static bool CheckFolder(string FolderName)
        {
            bool IsExist = false;

            Google.Apis.Drive.v3.DriveService service = GetService();

            // Define parameters of request.
            Google.Apis.Drive.v3.FilesResource.ListRequest FileListRequest = service.Files.List();
            FileListRequest.Fields = "nextPageToken, files(*)";
            // List files.
            IList <Google.Apis.Drive.v3.Data.File> files = FileListRequest.Execute().Files;
            List <GoogleDriveFile> FileList = new List <GoogleDriveFile>();

            //For getting only folders
            files = files.Where(x => x.MimeType == "application/vnd.google-apps.folder" && x.Name == FolderName).ToList();

            if (files.Count > 0)
            {
                IsExist = false;
            }
            return(IsExist);
        }
Beispiel #10
0
        public static List <GoogleDriveFiles> GetDriveFilesCustom(string id)
        {
            Google.Apis.Drive.v3.DriveService service = GetService();


            // Define parameters of request.
            Google.Apis.Drive.v3.FilesResource.ListRequest FileListRequest = service.Files.List();
            // for getting folders only.
            FileListRequest.Q = "'" + id + "' in parents and " + "mimeType!='application/vnd.google-apps.folder'"; //get the files under folder id

            FileListRequest.Fields = "nextPageToken, files(*)";

            // List files.
            IList <Google.Apis.Drive.v3.Data.File> files = FileListRequest.Execute().Files;
            List <GoogleDriveFiles> FileList             = new List <GoogleDriveFiles>();


            // For getting only folders
            //  files = files.Where(x => x.MimeType != "application/vnd.google-apps.folder").ToList();


            if (files != null && files.Count > 0)
            {
                foreach (var file in files)
                {
                    GoogleDriveFiles File = new GoogleDriveFiles
                    {
                        Id          = file.Id,
                        Name        = file.Name,
                        Size        = file.Size,
                        Version     = file.Version,
                        CreatedTime = file.CreatedTime,
                    };
                    FileList.Add(File);
                }
            }
            return(FileList);
        }
        public static List <GoogleDriveFile> GetDriveFolders()
        {
            Google.Apis.Drive.v3.DriveService service    = GetService();
            List <GoogleDriveFile>            FolderList = new List <GoogleDriveFile>();

            Google.Apis.Drive.v3.FilesResource.ListRequest request = service.Files.List();
            request.Q      = "mimeType='application/vnd.google-apps.folder'";
            request.Fields = "files(id, name)";
            Google.Apis.Drive.v3.Data.FileList result = request.Execute();
            foreach (var file in result.Files)
            {
                GoogleDriveFile File = new GoogleDriveFile
                {
                    Id          = file.Id,
                    Name        = file.Name,
                    Size        = file.Size,
                    Version     = file.Version,
                    CreatedTime = file.CreatedTime
                };
                FolderList.Add(File);
            }
            return(FolderList);
        }
Beispiel #12
0
        private async Task CheckFilesRecursively(DriveService service, string currentFolder, string folderId, string nextPageToken = null)
        {
            // Define parameters of request.
            Google.Apis.Drive.v3.FilesResource.ListRequest listRequest = service.Files.List();
            string folderID = folderId; //Change this for your folder ID.

            listRequest.Q        = "'" + folderID + "' in parents";
            listRequest.PageSize = 100;
            if (!string.IsNullOrEmpty(nextPageToken))
            {
                listRequest.PageToken = nextPageToken;
            }
            listRequest.Fields = "nextPageToken, files(id, name, md5Checksum, size, mimeType)";

            //Start at root, look for all files that we don't have or files that need updating and grab them!
            // List files.
            FileList fileList = listRequest.Execute();
            IList <Google.Apis.Drive.v3.Data.File> files = fileList.Files;

            if (files != null && files.Count > 0)
            {
                foreach (var file in files)
                {
                    if (IsFolder(file.MimeType))
                    {
                        if (!Directory.Exists(Path.Combine(currentFolder, file.Name)))
                        {
                            Directory.CreateDirectory(Path.Combine(currentFolder, file.Name));
                        }
                        await CheckFilesRecursively(service, Path.Combine(currentFolder, file.Name), file.Id, null);
                    }
                    else if (IsFile(file.MimeType))
                    {
                        if (!File.Exists(Path.Combine(currentFolder, file.Name)))
                        {
                            //Queue File Up
                            UpdateList.Enqueue(new Update(Path.Combine(currentFolder, file.Name), file));
                            UpdateSize += file.Size ?? 0;
                        }
                        else
                        {
                            //if file size or md5 doesn't match, queue file up
                            long   length  = new System.IO.FileInfo(Path.Combine(currentFolder, file.Name)).Length;
                            string md5Hash = "";
                            using (var md5 = MD5.Create())
                            {
                                using (var stream =
                                           new BufferedStream(File.OpenRead(Path.Combine(currentFolder, file.Name)), 1200000))
                                {
                                    md5Hash = BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", "").ToLowerInvariant();
                                }
                            }
                            if (md5Hash != file.Md5Checksum || length != file.Size)
                            {
                                UpdateList.Enqueue(new Update(Path.Combine(currentFolder, file.Name), file));
                                UpdateSize += file.Size ?? 0;
                            }
                        }
                    }
                }
            }
            if (!string.IsNullOrEmpty(fileList.NextPageToken))
            {
                CheckFilesRecursively(service, currentFolder, folderID, fileList.NextPageToken);
            }
        }