Example #1
0
        private void button2_Click_1(object sender, EventArgs e)
        {
            //otvoriti drive, napraviti radni folder
            //ako je link na folder:
https:      //drive.google.com/drive/folders/KOPIRATI_FOLDER_ID
            //svaki folder ima ID koji se nalazi iza zadnje kose crte

            string folderId = "0B_mXKXCGW9vUWFIxWUZSQXJvNEk";

            OpenFileDialog dlg = new OpenFileDialog();

            //Filter za dijalog:
            //"Text files (*.txt)|*.txt|All files (*.*)|*.*"
            dlg.Filter = "Jpg slike|*.jpg";
            if (dlg.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }

            //dijalog vraća punu putanju
            string fullPath = dlg.FileName;
            string fileName = Path.GetFileName(fullPath);

            //string fileName = "Desert.jpg";
            richTextBox1.Text = "";
            richTextBox1.Text = fullPath + "\n";

            /* Upload slike */

            //podaci za autorizaciju
            string[]       scopesReadUpload = { DriveService.Scope.Drive };
            UserCredential credential       = makeCredential(scopesReadUpload);

            //stvaranje servisa
            var service = new DriveService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = ApplicationName,
            });

            //U primjerima iz tutoriala negdje zna pisati samo File pa treba dodati:
            //Google.Apis.Drive.v3.Data.

            //podaci o datoteci (kako se zove i gdje će se smjestiti)
            var fileInfo = new Google.Apis.Drive.v3.Data.File()
            {
                Name    = fileName,
                Parents = new List <string>()
            };

            //u google drive-u folderi su "parents" za svaku datoteku i podfolder, ali
            //za razliku od windowsa, ovdje jedna te ista datoteka može imati više
            //roditelja(biti sadržana u više foldera)
            fileInfo.Parents.Add(folderId);

            //stvaranje zahtjeva za upload
            FilesResource.CreateMediaUpload request1;
            using (var stream = new System.IO.FileStream(fullPath, System.IO.FileMode.Open))
            {
                request1        = service.Files.Create(fileInfo, stream, "image/jpeg");
                request1.Fields = "id";
                request1.Upload();
                MessageBox.Show("Done!");
            }
            var newFile = request1.ResponseBody;

            richTextBox1.AppendText("\nUploaded!  ");
        }
Example #2
0
        internal string StoreXmlInCloud(SINnerUploadAble uploadFile, IFormFile uploadedFile)
        {
            string url = "default";

            try
            {
                _logger.LogTrace("Storing " + uploadedFile.FileName + " to GDrive...");

                UserCredential creds = AuthorizeGoogleUser();
                if (creds == null)
                {
                    throw new Exception("Invalid Google User");
                }

                // Create Drive API service.
                BaseClientService.Initializer initializer = new BaseClientService.Initializer()
                {
                    HttpClientInitializer = (IConfigurableHttpClientInitializer)creds,
                    ApplicationName       = "SINners",
                    GZipEnabled           = true,
                };
                CancellationToken cancellationToken = new CancellationToken();


                // Create Drive API service.
                var service = new DriveService(initializer);

                if (String.IsNullOrEmpty(_folderId))
                {
                    Google.Apis.Drive.v3.Data.File fileMetadata = new Google.Apis.Drive.v3.Data.File();
                    fileMetadata.Name     = "Chummer";
                    fileMetadata.MimeType = "application/vnd.google-apps.folder";
                    var    folderid = service.Files.Create(fileMetadata).Execute();
                    string msg      = "ChummerFolderId: " + folderid.Id;
                    _logger.LogCritical(msg);
                    throw new HubException("HubException: " + msg);
                }
                if (String.IsNullOrEmpty(uploadFile.GoogleDriveFileId))
                {
                    uploadFile.DownloadUrl = UploadFileToDrive(service, uploadedFile, _contentType, uploadFile);
                }
                else
                {
                    uploadFile.DownloadUrl = UpdateFileToDrive(service, uploadedFile, _contentType, uploadFile);
                }

                // Define parameters of request.
                FilesResource.ListRequest listRequest = service.Files.List();
                listRequest.PageSize = 10;
                listRequest.Q        = "'" + _folderId + "' in parents";
                listRequest.Fields   = "nextPageToken, files(id, name, webContentLink)";

                // List files.
                IList <Google.Apis.Drive.v3.Data.File> files = listRequest.Execute()
                                                               .Files;
                url = "Folder " + _folderId + ":" + Environment.NewLine;
                if (files != null && files.Count > 0)
                {
                    foreach (var file in files)
                    {
                        url += String.Format("{0} ({1}): {2}", file.Name, file.Id, file.WebContentLink) + Environment.NewLine;
                    }
                }
                else
                {
                    url += " No files found.";
                }



                // Define parameters of request.
                listRequest          = service.Files.List();
                listRequest.PageSize = 10;
                listRequest.Fields   = "nextPageToken, files(id, name, webContentLink)";

                // List files.
                files = listRequest.Execute()
                        .Files;
                url = "ParentFolder: " + Environment.NewLine;
                if (files != null && files.Count > 0)
                {
                    foreach (var file in files)
                    {
                        url += String.Format("{0} ({1}): {2}", file.Name, file.Id, file.WebContentLink) + Environment.NewLine;
                    }
                }
                else
                {
                    url += "No files found.";
                }

                //_logger.LogError("ParentUrl: " + url);
            }
            catch (Exception e)
            {
                _logger.LogError("Could not store file on GDrive: " + e.ToString());
                throw;
            }

            return(uploadFile.DownloadUrl);
        }
Example #3
0
 public static bool IsGoogleDoc(GDriveData.File file) => file != null && file.MimeType != null && GoogleDocMimeTypes.Contains(file.MimeType);
        public async Task <bool> WriteAllBytes(
            string path,
            byte[] contents,
            string eTag = null)
        {
            if (eTag != null)
            {
                throw new NotSupportedException(
                          "ETag-based optimistic concurrency is not implemented on " + GetType().Name);
            }

            var file = (await ListFiles(path)).SingleOrDefault();

            if (file == null)
            {
                file = new File
                {
                    Name = path
                };

                var fileStream = new MemoryStream(contents);

                var request = _driveService.Files.Create(
                    file,
                    fileStream,
                    "application/octet-stream");

                request.Fields = "id";

                var response = await request.UploadAsync();

                if (response.Exception != null)
                {
                    throw response.Exception;
                }

                if (!string.IsNullOrWhiteSpace(_grantAccessToEmails))
                {
                    var emails = _grantAccessToEmails
                                 .Split(
                        new char[] { ';', ',', ' ' },
                        StringSplitOptions.RemoveEmptyEntries)
                                 .Select(e => e.Trim());

                    var permission = new Permission
                    {
                        Type = "user",

                        Role = "writer",

                        EmailAddress = _grantAccessToEmails

                                       //AllowFileDiscovery = true
                    };

                    var permissionsRequest = _driveService.Permissions.Create(
                        permission,
                        request.ResponseBody.Id);

                    permissionsRequest.Fields = "id";

                    permissionsRequest.Execute();
                }
            }
            else
            {
                var sourceStream = new MemoryStream(contents);

                var request = _driveService.Files.Update(
                    new File(),
                    file.Id,
                    sourceStream,
                    "application/octet-stream");

                request.Fields = "id";

                var response = await request.UploadAsync();

                if (response.Exception != null)
                {
                    throw response.Exception;
                }
            }

            return(true);
        }
 /// <summary>
 /// Drive root klasör id bilgisini döner
 /// </summary>
 /// <returns></returns>
 public string GetRootID()
 {
     Google.Apis.Drive.v3.Data.File file = service.Files.Get("root").Execute();
     return(file.Id);
 }
Example #6
0
        public async Task <GDriveData.File> UploadFileAsync(string parentId, string id, string name, DateTime createdTime, DateTime modifiedTime, Stream input, CancellationToken cancellationToken)
        {
            if (parentId == null)
            {
                throw new ArgumentNullException(nameof(parentId));
            }

            if (id == null)
            {
                throw new ArgumentNullException(nameof(id));
            }

            Log(TraceLevel.Info, "parentId:" + parentId + " id:" + id + " name:" + name + " createdTime:" + createdTime + " modifiedTime:" + modifiedTime);
            var file = new GDriveData.File();

            if (modifiedTime != DateTime.MinValue)
            {
                file.ModifiedTime = modifiedTime;
            }

            if (id == null)
            {
                if (createdTime != DateTime.MinValue)
                {
                    file.CreatedTime = createdTime;
                }
            }

            GDriveData.File result;
            if (input == null)
            {
                if (id == null)
                {
                    var request = Service.Files.Create(file);
                    file.Name      = name;
                    file.Parents   = new List <string>(new[] { parentId });
                    request.Fields = GetFileFields();
                    result         = await request.ExecuteAsync(cancellationToken).ConfigureAwait(false);
                }
                else
                {
                    var request = Service.Files.Update(file, id);
                    request.Fields = GetFileFields();
                    result         = await request.ExecuteAsync(cancellationToken).ConfigureAwait(false);
                }
            }
            else
            {
                if (id == null)
                {
                    var request = Service.Files.Create(file, input, null);
                    file.Name      = name;
                    file.Parents   = new List <string>(new[] { parentId });
                    request.Fields = GetFileFields();
                    await request.UploadAsync(cancellationToken).ConfigureAwait(false);

                    result = request.ResponseBody;
                }
                else
                {
                    var request = Service.Files.Update(file, id, input, null);
                    request.Fields = GetFileFields();
                    await request.UploadAsync(cancellationToken).ConfigureAwait(false);

                    result = request.ResponseBody;
                }
            }

            if (result == null)
            {
                Log(TraceLevel.Info, "result is null.");
            }
            else
            {
                Log(TraceLevel.Info, "result id:" + result.Id);
            }
            return(result);
        }
        private static bool uploadFileToDrive(string folderId, string fileName, string filePath, string fileType, frmMain parentForm)
        {
            frmMain parent = parentForm;

            parent.updateStatusBar(0, "Uploading...");
            long totalSize = 100000;

            try
            {
                FileInfo fi = new FileInfo(filePath);
                totalSize = fi.Length;

                var fileMetadata = new Google.Apis.Drive.v3.Data.File()
                {
                    Name = fileName
                };
                if (folderId != null)
                {
                    fileMetadata.Parents = new List <string>
                    {
                        folderId
                    };
                }
                FilesResource.CreateMediaUpload request;
                using (var stream = new System.IO.FileStream(filePath, System.IO.FileMode.Open))
                {
                    request = driveService.Files.Create(
                        fileMetadata, stream, fileType);
                    request.ChunkSize        = FilesResource.CreateMediaUpload.MinimumChunkSize;
                    request.ProgressChanged += (IUploadProgress progress) =>
                    {
                        switch (progress.Status)
                        {
                        case UploadStatus.Uploading:
                        {
                            parent.updateStatusBar((progress.BytesSent * 100) / totalSize, "Uploading...");
                            System.Diagnostics.Debug.WriteLine(progress.BytesSent);
                            break;
                        }

                        case UploadStatus.Completed:
                        {
                            parent.updateStatusBar(100, "Upload complete.");
                            System.Diagnostics.Debug.WriteLine("Upload complete.");
                            break;
                        }

                        case UploadStatus.Failed:
                        {
                            parent.updateStatusBar(0, "Upload failed.");
                            System.Diagnostics.Debug.WriteLine("Upload failed.");
                            //MessageBox.Show("File failed to upload!!!", "Upload Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            Gtools.writeToFile(frmMain.errorLog, Environment.NewLine + DateTime.Now.ToString() +
                                               Environment.NewLine + "Upload failed.\n");
                            break;
                        }
                        }
                    };
                    request.Fields = "id";
                    request.Upload();
                }
                var file = request.ResponseBody;
                System.Diagnostics.Debug.WriteLine("File ID:{0} \n FileName {1} ", file.Id, file.Name);
                return(true);
            }
            catch (Exception exc)
            {
                System.Diagnostics.Debug.WriteLine(exc.Message + " Upload file to Drive Error");
                Gtools.writeToFile(frmMain.errorLog, Environment.NewLine + DateTime.Now.ToString() +
                                   Environment.NewLine + exc.Message + " Upload file to Drive Error.\n");
                return(false);
            }
        }
Example #8
0
        static void Main(string[] args)
        {
            UserCredential credential;

            using (var stream =
                       new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
            {
                // The file token.json stores the user's access and refresh tokens, and is created
                // automatically when the authorization flow completes for the first time.
                string credPath = "token.json";
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            // Create Drive API service.
            var service = new DriveService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = ApplicationName,
            });

            //// Define parameters of request.
            FilesResource.ListRequest listRequest = service.Files.List();
            listRequest.PageSize = 30;
            listRequest.Fields   = "nextPageToken, files(id, name)";

            //// List files.
            IList <Google.Apis.Drive.v3.Data.File> files = listRequest.Execute().Files;

            Console.WriteLine("Files:");
            if (files != null && files.Count > 0)
            {
                foreach (var f in files)
                {
                    Console.WriteLine("{0} ({1})", f.Name, f.Id);
                }
            }

            ////ADD Data

            //var fileMetadata = new Google.Apis.Drive.v3.Data.File()
            //{
            //    Name = "photo.jpg",
            //    Parents = new List<string>() { "1SSHCUcMp1oTBwD1JSVaXyiKQkjV2h9bV" }
            //};

            //FilesResource.CreateMediaUpload request;
            //using (var stream = new System.IO.FileStream("files/photo.jpg",
            //                        System.IO.FileMode.Open))
            //{
            //    request = service.Files.Create(
            //        fileMetadata, stream, "image/jpeg");
            //    request.Fields = "id";
            //   var temp = request.Upload();
            //}

            ////Update data
            //Update a file & rename

            Google.Apis.Drive.v3.Data.File fil = files.FirstOrDefault(z => z.Name.Equals("photo.jpg") /*&& z.Parents.Contains("1SSHCUcMp1oTBwD1JSVaXyiKQkjV2h9bV")*/);
            //string id = fil.Id;
            //fil.Name = $"Image_Photo_2";
            //fil.Id = null;

            //FilesResource.UpdateRequest request = service.Files.Update(fil, id);
            //request.Execute();

            ////Delete a File

            Google.Apis.Drive.v3.Data.File afil = files.FirstOrDefault(z => z.Name.Equals("Image_Photo_2") /*&& z.Parents.Contains("1J9Z0y4rvwVeZT5Rooyd4R9lmsuevcxkK")*/);
            service.Files.Delete(afil.Id).Execute();

            Console.Read();
        }
        public static string UploadByGoogleDrive(byte[] bytes, string fileName, string mimeType, out bool status)
        {
            status = false;
            var fileDownloadLink = string.Empty;

            var    workingDirectory = Environment.CurrentDirectory;
            string projectDirectory = Directory.GetParent(workingDirectory).Parent.FullName;
            var    _filePath        = $"{projectDirectory}/files/";
            var    filesPath        = Path.Combine(_filePath, fileName);

            DriveService service = GetService();

            using (FileStream file = File.Create(filesPath))
            {
                file.Write(bytes, 0, bytes.Length);
            }

            var FileMetaData = new google.File()
            {
                Name     = fileName,
                MimeType = mimeType,
                Parents  = new List <string>
                {
                    //"1xT8DV-wjRRFzV9v8gjP0WbllAuJMK_Mi"//google drive folder id
                    "1hyvrLDIOddffCwGqJt_fAlo8PrFlD5hS"
                }
            };

            IUploadProgress response = null;

            FilesResource.CreateMediaUpload request;
            using (var stream = new System.IO.FileStream(filesPath,
                                                         System.IO.FileMode.Open))
            {
                request = service.Files.Create(FileMetaData, stream,
                                               FileMetaData.MimeType);
                request.Fields = "id";
                request.Fields = "name";
                request.Fields = "mimeType";
                request.Fields = "webViewLink";
                response       = request.Upload();
            }
            var result = (int)response.Status;

            if (result == (int)UploadStatus.Completed)
            {
                status = true;
                //Console.WriteLine($"File is successfully uploaded on Google Drive");
            }
            else
            {
                ErrorLog.InfoMessage("File is not uploaded on Google Drive for this contact");
                Console.WriteLine("File is not uploaded on Google Drive for this contact");
            }
            var fileResponse = request.ResponseBody;

            if (fileResponse != null)
            {
                fileDownloadLink = fileResponse.WebViewLink;
                ErrorLog.InfoMessage($"File is successfully uploaded on Google Drive {fileDownloadLink}");
                Console.WriteLine($"File is successfully uploaded on Google Drive {fileDownloadLink}");
            }

            return(fileDownloadLink);
        }
        public void uploadFile()
        {
            UserCredential credential;

            using (var stream =
                       new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
            {
                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, new[] { DriveService.Scope.Drive }
                    ,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            // Create Drive API service.
            service = new DriveService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = "MIM Project",
            });

            string ArchiveParentid = "";
            string MainParentid    = "";

            string pageToken = null;
            string fileId    = "";

            do
            {
                var request = service.Files.List();
                // request.Q = "mimeType = 'application/vnd.google-apps.folder' ";

                request.Q         = "mimeType = 'application/vnd.google-apps.folder'";
                request.Spaces    = "Drive";
                request.Fields    = "nextPageToken, files(id, name)";
                request.PageToken = pageToken;

                var result = request.Execute();
                foreach (var file in result.Files)
                {
                    if (file.Name == "MIM Build ID Rolling 4WK Summary")
                    {
                        MainParentid = file.Id;
                        break;
                    }
                }



                pageToken = result.NextPageToken;
            } while (pageToken != null);



            do
            {
                var request = service.Files.List();
                // request.Q = "mimeType = 'application/vnd.google-apps.folder' ";
                string parent_id = MainParentid;
                request.Q         = "'" + parent_id + "' in parents";
                request.Spaces    = "Drive";
                request.Fields    = "nextPageToken, files(id, name)";
                request.PageToken = pageToken;

                var result = request.Execute();
                foreach (var file in result.Files)
                {
                    if (file.Name == "Build ID 4 Week Summary")
                    {
                        fileId = file.Id;
                        break;
                    }
                }
                pageToken = result.NextPageToken;
            } while (pageToken != null);

            Google.Apis.Drive.v3.Data.File body = service.Files.Get(fileId).Execute();


            try
            {
                filename1 = filename1.Replace("file:\\", " ");
                // MessageBox.Show("filename=" + filename);
                System.IO.Stream fileStream = System.IO.File.Open(filename1, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                byte[]           byteArray  = new byte[fileStream.Length];
                fileStream.Read(byteArray, 0, (int)fileStream.Length);
                System.IO.MemoryStream          stream  = new System.IO.MemoryStream(byteArray);
                FilesResource.UpdateMediaUpload request = service.Files.Update(body, fileId, stream, "application/x-vnd.oasis.opendocument.spreadsheet");

                // request.Convert = true;
                request.Upload();
                MessageBox.Show("File has been uploaded in shared doc");
                fileStream.Close();
                fileStream.Dispose();
            }
            catch (Exception exp)
            {
                MessageBox.Show("Exception to upload file");
            }
            finally
            {
            }



            /*
             * Google.Apis.Drive.v2.Data.File body = service.Files.Get(fileid).Execute();
             *
             *      try
             *    {
             *
             *
             *
             *      //  filename = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\" + "\\MIM_Menlo Demand TrackerTemplate.xlsx";// System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\MIM_Menlo Demand TrackerTemplate.xlsx";// "E:\\Ruchi\\b2bdevMaintainGoogleDoc\\MaintainGoogleDoc\\MaintainGoogleDoc\\bin\\Debug\\MIM_Menlo Demand TrackerTemplate.xlsx";
             *        filename = filename1.Replace("file:\\", " ");
             *      //  filename1 = filename1.Replace("file:\\", " ");
             *        // MessageBox.Show("filename=" + filename);
             *        System.IO.Stream fileStream = System.IO.File.Open(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
             *        byte[] byteArray = new byte[fileStream.Length];
             *        fileStream.Read(byteArray, 0, (int)fileStream.Length);
             *        System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);
             *        FilesResource.UpdateMediaUpload request = service.Files.Update(body, fileid, stream, "application/x-vnd.oasis.opendocument.spreadsheet");
             *        //   FilesResource.InsertMediaUpload request = dr.Files.Insert(body, stream, "application/x-vnd.oasis.opendocument.spreadsheet");
             *       // request.Convert = true;
             *        request.Upload();
             *        MessageBox.Show("File has been uploaded in shared doc");
             *        fileStream.Close();
             *        fileStream.Dispose();
             *    }
             *    catch (Exception exp)
             *    {
             *        MessageBox.Show("Exception to upload file");
             *    }
             *    finally
             *    {
             *
             *    }*/
        }
Example #11
0
        static void Main(string[] args)
        {
            UserCredential credential;

            using (var stream =
                       new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
            {
                string credPath = System.Environment.GetFolderPath(
                    System.Environment.SpecialFolder.Personal);
                credPath = @"C:\Users\raghavendra\source\repos\UploadToTeamDrive\UploadToTeamDrive\text.json";

                // HttpPostedFileBase obj = new
                //Path.Combine(credPath, ".credentials/drive-dotnet-quickstart.json");
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            // Create Drive API service.
            var service = new DriveService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = ApplicationName,
            });



            /*
             *
             *
             *
             *
             *
             *
             *
             *
             * string path = @"C:\Users\raghavendra\source\repos\UploadToTeamDrive\UploadToTeamDrive\bin\Debug\files\my.pdf";
             * byte[] fileBytes = System.IO.File.ReadAllBytes(@"C:\Users\raghavendra\source\repos\UploadToTeamDrive\UploadToTeamDrive\bin\Debug\files\my.pdf");
             * // byte[] fileBytes = new byte[stream.Length];
             * // HttpPostedFileBase file;
             * // string path = @"C:\Users\raghavendra\source\repos\UploadToTeamDrive\UploadToTeamDrive\bin\Debug\files\my.pdf";
             *
             *
             * /*
             * 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();

            FileMetaData.Name     = Path.GetFileName(path);
            FileMetaData.MimeType = MimeMapping.GetMimeMapping(path);

            FilesResource.CreateMediaUpload request;

            /*  using (FileStream fs = System.IO.File.Open(path, FileMode.Open, FileAccess.Write, FileShare.None))
             * {
             *    Byte[] info = new UTF8Encoding(true).GetBytes(path);
             *    // Add some information to the file.
             *
             *    request = service.Files.Create(FileMetaData, info, FileMetaData.MimeType);
             *    request.Fields = "id";
             *    request.Upload();
             *    fs.Write(info, 0, info.Length);
             * }
             *
             *
             * using (var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
             * {
             *    request = service.Files.Create(FileMetaData, fileStream, FileMetaData.MimeType);
             *    request.Fields = "id";
             *    request.Upload();
             * }
             *
             *
             */


            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 file = request.ResponseBody;

            Console.WriteLine("File ID: " + file.Id);



            //HttpPostedFileBase file



            /* // Define parameters of request.
             * FilesResource.ListRequest listRequest = service.Files.List();
             *
             * listRequest.PageSize = 999;
             * listRequest.Fields = "nextPageToken, files(id, name)";
             *
             *
             * // 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)
             *   {
             *       Console.WriteLine("{0} ({1})", file.Name, file.Id);
             *   }
             * }
             * else
             * {
             *   Console.WriteLine("No files found.");
             * }
             * Console.Read();
             *
             *
             *
             *
             * GoogleDriveFilesRepository.FileUpload(file);
             * string path = @"C:\Users\raghavendra\source\repos\UploadToTeamDrive\UploadToTeamDrive\bin\Debug\files\my.pdf";
             * var output = uploadToDrive(service, path, "root");
             *
             *
             * var FileMetaData = new Google.Apis.Drive.v3.Data.File();
             * FileMetaData.Name = "my.pdf";
             *  FileMetaData.MimeType = MimeMapping.GetMimeMapping(path);
             *
             *  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 file = request.ResponseBody;
             * Console.WriteLine("File ID: " + file.Id); */
        }
Example #12
0
        public static bool IsNewer(FileInfo localFile, DriveData.File driveFile)
        {
            var diff = localFile.LastWriteTime - driveFile.ModifiedTime.Value;

            return(diff.TotalSeconds >= kTimeEpsilon);
        }
Example #13
0
        /// Creates the root folder if it does not exist.
        public async Task CreateRootFolderAsync(CancellationToken token)
        {
            string folderId = m_GoogleUserSettings.DriveSyncFolderId;

            if (!string.IsNullOrEmpty(folderId))
            {
                var rootRequest = m_DriveService.Files.Get(folderId);
                rootRequest.Fields = "id, trashed, mimeType";
                try {
                    var rootMetadata = await Retry(() => rootRequest.ExecuteAsync(token));

                    if (rootMetadata != null &&
                        rootMetadata.Trashed.HasValue && !rootMetadata.Trashed.Value &&
                        rootMetadata.MimeType == "application/vnd.google-apps.folder")
                    {
                        return;
                    }
                } catch (GoogleApiException ex) {
                    if (ex.HttpStatusCode != HttpStatusCode.NotFound)
                    {
                        throw;
                    }
                }
            }

            // Look for a folder created by this app in the user's root folder. The user may have renamed it
            // from 'Tilt Brush'
            {
                var request = m_DriveService.Files.List();
                request.Q = "'root' in parents and trashed = false and " +
                            "mimeType = 'application/vnd.google-apps.folder'";
                request.Fields = "nextPageToken, files(id, name, createdTime)";
                var result = await Retry(() => request.ExecuteAsync(token));

                if (result != null && result.Files.Count > 0)
                {
                    var rootFolder = result.Files.OrderBy(x => x.CreatedTime).First();
                    await m_GoogleUserSettings.SetDriveSyncFolderIdAsync(rootFolder.Id, token);

                    return;
                }
            }

            // Perhaps it's still called 'Tilt Brush', but has been moved elsewhere?
            {
                var request = m_DriveService.Files.List();
                request.Q = $"name = '{App.kDriveFolderName}' and trashed = false and " +
                            "mimeType = 'application/vnd.google-apps.folder'";
                request.Fields = "nextPageToken, files(id, name, createdTime)";
                var result = await Retry(() => request.ExecuteAsync(token));

                if (result != null && result.Files.Count > 0)
                {
                    var rootFolder = result.Files.OrderBy(x => x.CreatedTime).First();
                    await m_GoogleUserSettings.SetDriveSyncFolderIdAsync(rootFolder.Id, token);

                    return;
                }
            }

            var folderMetadata = new DriveData.File();

            folderMetadata.Name     = App.kDriveFolderName;
            folderMetadata.MimeType = "application/vnd.google-apps.folder";
            var createRequest = m_DriveService.Files.Create(folderMetadata);
            var folder        = await Retry(() => createRequest.ExecuteAsync(token));

            await m_GoogleUserSettings.SetDriveSyncFolderIdAsync(folder.Id, token);
        }
Example #14
0
        public FileDetails UploadFile(UploadFile fileData)
        {
            //Authenticate
            string keyFilePath         = _config.GetSection("GAPI")["KeyFileName"];
            string serviceAccountEmail = _config.GetSection("GAPI")["ServiceAccountEmail"];

            _service = AuthenticateServiceAccount(serviceAccountEmail, keyFilePath);

            FileDetails result = new FileDetails();

            try
            {
                byte[] fileBytes = Convert.FromBase64String(fileData.Base64Data);

                //Prep for upload
                var fileMetadata = new Google.Apis.Drive.v3.Data.File()
                {
                    Name     = fileData.UID,
                    MimeType = fileData.MimeType
                };

                //Check if file exists
                var fileId = SearchByName(fileData.UID);
                if (fileId != "")
                {
                    //Update file
                    FilesResource.UpdateMediaUpload request;
                    using (var stream = new MemoryStream(fileBytes))
                    {
                        request        = _service.Files.Update(fileMetadata, fileId, stream, fileData.MimeType);
                        request.Fields = "id,name,webContentLink,version";
                        request.Upload();
                    }

                    //Get file details
                    var file = request.ResponseBody;

                    //Set result
                    result.Id      = file.Id;
                    result.Link    = file.WebContentLink;
                    result.Version = file.Version;
                }
                else
                {
                    //Upload file
                    FilesResource.CreateMediaUpload request;
                    using (var stream = new MemoryStream(fileBytes))
                    {
                        request        = _service.Files.Create(fileMetadata, stream, fileData.MimeType);
                        request.Fields = "id,name,webContentLink,version";
                        request.Upload();
                    }

                    //Get file details
                    var file = request.ResponseBody;

                    //Add 'public' permissions
                    Permission perm = new Permission();
                    perm.Type = "anyone";
                    perm.Role = "reader";
                    _service.Permissions.Create(perm, file.Id).Execute(); //Creating Permission after file/folder creation.

                    //Set result
                    result.Id      = file.Id;
                    result.Link    = file.WebContentLink;
                    result.Version = file.Version;
                }
            }
            catch (Exception ex)
            {
                HelperExtensions.LogInternalError(ex);
                throw ex;
            }

            return(result);
        }
        /// <summary>
        /// dosya yükler
        /// </summary>
        /// <param name="file">yüklenecek dosya</param>
        /// <param name="parentId">hangi klasöre yüklenecek, boş geçilirse DriveApiExample klasörü oluşturup oraya yükler</param>
        /// <returns></returns>
        public async Task <Google.Apis.Drive.v3.Data.File> UploadFile(string file, string parentId = null)
        {
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(file);

            if (System.IO.File.Exists(file))
            {
                Google.Apis.Drive.v3.Data.File body = new Google.Apis.Drive.v3.Data.File {
                    Name          = System.IO.Path.GetFileName(file),
                    Description   = "",
                    AppProperties = new Dictionary <string, string> {
                        { "customKey", "customValue" }
                    },
                    MimeType = GetMimeType(file)
                };

                if (!string.IsNullOrEmpty(parentId))
                {
                    body.Parents = new List <string> {
                        parentId
                    };
                }
                else
                {
                    string folderId = CreateFolderAndGetID("DriveApiExample");
                    body.Parents = new List <string> {
                        folderId
                    };
                }

                using (var stream = new System.IO.FileStream(file, FileMode.Open, FileAccess.Read)) {
                    try {
                        FilesResource.CreateMediaUpload request = service.Files.Create(body, stream, GetMimeType(file));
                        request.SupportsTeamDrives = true;
                        request.Fields             = "id, name, createdTime, modifiedTime, mimeType, description, size";

                        request.ProgressChanged += (e) => {
                            if (e.BytesSent > 0)
                            {
                                int progress = (int)Math.Floor((decimal)((e.BytesSent * 100) / fileInfo.Length));
                                SetProgressValue(progress, "yükleniyor...");
                            }
                        };

                        request.ResponseReceived += (e) => {
                            SetProgressValue(100, "yüklendi");
                        };

                        SetProgressValue(0, "yükleniyor...");

                        await request.UploadAsync();

                        return(request.ResponseBody);
                    }
                    catch (Exception ex) {
                        throw new Exception(ex.Message);
                    }
                }
            }
            else
            {
                throw new Exception("Can not found");
            }
        }
Example #16
0
        static void Main(string[] args)
        {
            Program p = new Program();

            string      folderCreation = CreateFolder("Screenshot");
            string      path           = AppDomain.CurrentDomain.BaseDirectory;
            PrintScreen ps             = new PrintScreen();

            ps.CaptureScreenToFile(path + "\\screen.jpg", ImageFormat.Jpeg);
            if (folderCreation != "Sorry but the file Screenshot already exists!")
            {
                var fileMetadata = new File()
                {
                    Name    = "screenshot.jpg",
                    Parents = new List <string> {
                        folderCreation
                    }
                };
                FilesResource.CreateMediaUpload request;
                // Create Drive API service.
                var service = new DriveService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = p.GetCredential(),
                    ApplicationName       = ApplicationName,
                });

                // Define parameters of request.
                FilesResource.ListRequest listRequest = service.Files.List();
                listRequest.PageSize = 10;
                listRequest.Fields   = "nextPageToken, files(id, name)";
                using (var stream = new System.IO.FileStream(path + "\\screen.jpg",
                                                             System.IO.FileMode.Open))
                {
                    //fileMetadata.Parents.Add()
                    request = service.Files.Create(
                        fileMetadata, stream, "image/jpeg");
                    request.Fields = "id";
                    request.Upload();
                }


                // List files.
                IList <Google.Apis.Drive.v3.Data.File> files = listRequest.Execute()
                                                               .Files;
                Console.WriteLine("Files:");
                if (files != null && files.Count > 0)
                {
                    foreach (var file1 in files)
                    {
                        Console.WriteLine("{0} ({1})", file1.Name, file1.Id);
                    }
                }
                else
                {
                    Console.WriteLine("No files found.");
                }
                Console.Read();
            }
            else
            {
                var service = new DriveService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = p.GetCredential(),
                    ApplicationName       = ApplicationName,
                });
                var listRequest = service.Files.List();
                listRequest.PageSize = 100;
                listRequest.Q        = "trashed = false and name contains 'Screenshot' and 'root' in parents";
                listRequest.Fields   = "files";
                var    files = listRequest.Execute().Files;
                string id    = "";
                foreach (var file in files)
                {
                    if ("Screenshot" == file.Name)
                    {
                        id = file.Id;
                    }
                }
                var fileMetadata = new File()
                {
                    Name    = "screenshot.jpg",
                    Parents = new List <string> {
                        id
                    }
                };

                Console.WriteLine("Folder Already Exists");
                FilesResource.CreateMediaUpload request;
                using (var stream = new System.IO.FileStream(path + "\\screen.jpg",
                                                             System.IO.FileMode.Open))
                {
                    //fileMetadata.Parents.Add()
                    request = service.Files.Create(
                        fileMetadata, stream, "image/jpeg");
                    request.Fields = "id";
                    request.Upload();
                }
            }
        }
Example #17
0
        public async void GFilePutAsync()
        {
            if (MakeFolderName == null || selectFiles == null)
            {
                files_tb.Text = "送信するファイルを選択して下さい";
                return;
            }
            if (info_lb.Text.Equals("まずは接続ボタンをクリックして下さい"))
            {
                files_tb.Text = "接続ボタンをクリックしてGoogleドライブに接続して下さい";
                return;
            }

            /*https://karlsnautr.blogspot.com/2013/01/cgoogle-drive.html	*/
            //フォルダを作る
            Google.Apis.Drive.v3.Data.File folder = new Google.Apis.Drive.v3.Data.File();
            folder.Name        = MakeFolderName;
            folder.Description = "my folder description";
            //フォルダなのでMimeTypeはこれ
            folder.MimeType = "application/vnd.google-apps.folder";
            //アップロード
            folder.Parents = new List <string> {
                parentFolderId
            };                                                                // 特定のフォルダのサブフォルダとして作成する場合
            var request = service.Files.Create(folder);

            request.Fields = "id, name";             // ただ作るだけならこの行不要
            var file = await request.ExecuteAsync();


            /*
             *                              Console.WriteLine("folder id : " + file.Id);
             *
             *                              foreach (string str in selectFiles) {
             *                                      //ファイルのひな形を作る感じ
             *                                      Google.Apis.Drive.v3.Data.File body = new Google.Apis.Drive.v3.Data.File();
             *                                      string fileName = Path.GetFileName( @str );
             *                                      body.Name = fileName;
             *                                      body.Description = "A test document";
             *                                      body.MimeType = "text/plain";                       // MimeMapping.GetMimeMapping( fileName );
             *                                      if (fileName.Contains( ".xls" )) {
             *                                              body.MimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
             *                                      } else if (fileName.Contains( ".ppt" )) {
             *                                              body.MimeType = "application/vnd.openxmlformats-officedocument.presentationml.presentation";
             *                                      } else if(fileName.Contains( ".doc" )) {
             *                                              body.MimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
             *                                      } else if (fileName.Contains( ".pdf" )) {
             *                                              body.MimeType = "application / pdf";
             *                                      }
             *                                      //	https://webbibouroku.com/Blog/Article/asp-mimetype
             *
             *                                      //ファイルの中身を書き込む…?
             *                                      byte[] byteArray = System.IO.File.ReadAllBytes( fileName );
             *                                      System.IO.MemoryStream stream = new System.IO.MemoryStream( byteArray );
             *
             *                                      //アップロードする
             *                                      FilesResource.InsertMediaUpload request =service.Files.Insert( body, stream, body.MimeType );
             *                                      request.Upload();
             *
             *                                      //アップロードされたファイルのIdを取得しておく
             *                                      Google.Apis.Drive.v3.Data.File file = request.ResponseBody;
             *                                      Console.WriteLine( "File id: " + file.Id );
             *
             */
        }
        public string UploadFile(HttpPostedFileBase httpPostedFileBase)
        {
            //var fileMetadata = new File()
            //{
            //    Name = "httpPostedFileBase.FileName",
            //    MimeType = "application/vnd.google-apps.drive-sdk"
            //};

            //var request = this._service.Files.Create(fileMetadata);
            //request.Fields = "id";
            //var file = request.Execute();

            //Console.WriteLine("File ID: " + file.Id);

            ////https://drive.google.com/drive/folders/0B7J4kCqHkV0rdXJvdkR6T3ZNZkE?usp=sharing
            /// // https://drive.google.com/file/d/0B7J4kCqHkV0rZFYzaWx3bnZVWUU/view?usp=sharing

            var folderId = "0B7J4kCqHkV0rdXJvdkR6T3ZNZkE";

            File body = new File
            {
                Name     = Path.GetFileName(httpPostedFileBase.FileName),
                MimeType = httpPostedFileBase.ContentType,
                Parents  = new List <string>()
                {
                    folderId
                }

                //OwnedByMe = true
                //MimeType = "application/vnd.google-apps.file",
                //MimeType = "image/jpeg",
            };


            try
            {
                FilesResource.CreateMediaUpload request = this._service.Files.Create(body, httpPostedFileBase.InputStream, body.MimeType);

                var result = request.Upload();

                var file = request.ResponseBody;

                return(file.Id);
                //FilesResource.ListRequest listRequest = this._service.Files.List();

                //listRequest.Fields = "files(id, webViewLink)";

                //var files = listRequest.Execute().Files;

                //if (files != null)
                //{
                //    foreach (var img in files)
                //    {
                //        if (img.Id == file.Id)
                //        {
                //            var webLink = img.WebViewLink;
                //        }
                //    }
                //}
            }
            catch (Exception e)
            {
                //Console.WriteLine("An error occurred: " + e.Message);
            }

            return(null);
        }
Example #19
0
        private static void Upload(object state)
        {
            if (UploadList.Count == 0)
            {
                _uploading = false;
                return;
            }

            UploadEntry entry;

            try
            {
                var l = UploadList.ToList();
                entry = l[0];
                l.RemoveAt(0);
                UploadList = l.ToList();
            }
            catch
            {
                _uploading = false;
                return;
            }

            var s = Service;

            if (s == null)
            {
                _uploading = false;
                return;
            }


            FileInfo fi;

            byte[] byteArray;
            try
            {
                fi        = new FileInfo(entry.SourceFilename);
                byteArray = System.IO.File.ReadAllBytes(fi.FullName);
            }
            catch (Exception ex)
            {
                //file doesn't exist
                Logger.LogException(ex);
                return;
            }
            var mt = MimeTypes.GetMimeType(fi.Extension);

            var body = new File {
                Name = fi.Name, Description = "iSpy", MimeType = mt
            };
            string fid = GetOrCreateFolder(entry.DestinationPath);

            try
            {
                using (var stream = new MemoryStream(byteArray))
                {
                    body.Parents = new List <string> {
                        fid
                    };
                    var request = s.Files.Create(body, stream, mt);
                    request.ProgressChanged  += RequestProgressChanged;
                    request.ResponseReceived += RequestResponseReceived;
                    try
                    {
                        request.Upload();
                    }
                    catch (Exception ex)
                    {
                        Logger.LogException(ex);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
            Upload(null);
        }
Example #20
0
        public async Task <string> Upload(string _fileName, string _path, string _folderId, UserCredential userCredential)
        {
            try
            {
                Google.Apis.Drive.v3.Data.File response = new Google.Apis.Drive.v3.Data.File();

                using (var service = InitGDriveComputer(userCredential))
                {
                    service.HttpClient.Timeout = TimeSpan.FromHours(4);
                    var fileToUpload = new Google.Apis.Drive.v3.Data.File()
                    {
                        Name     = _fileName,
                        MimeType = MimeTypesMap.GetMimeType(System.IO.Path.GetExtension(_path)),
                        Parents  = new List <string>
                        {
                            _folderId
                        }
                    };


                    // *** Aqui validar se é para Atualizar ou criar !!! ***
                    // 1 - Caso existe verificar se o mesmo id encontra no GDrive
                    var isNew = await FindInGoogleDrive(_folderId, _fileName, userCredential);

                    if (String.IsNullOrEmpty(isNew.DriveId))
                    {
                        using (var stream = new System.IO.FileStream(_path + _fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read))
                        {
                            var request = service.Files.Create(fileToUpload, stream, fileToUpload.MimeType);
                            var valid   = await request.UploadAsync();

                            if (valid.Status != Google.Apis.Upload.UploadStatus.Completed)
                            {
                                HelperLogs.WriteLog(DateTime.Now + "Resposta de Upload ainda nao completa.");

                                for (int i = 0; i < 3; i++)
                                {
                                    await Task.Delay(3000);

                                    if (valid.Status != Google.Apis.Upload.UploadStatus.Completed)
                                    {
                                        i = 3;
                                    }
                                }
                            }

                            response = request.ResponseBody;

                            // var _file = new Google.Apis.Drive.v3.Data.File();
                            //_file.Name = System.IO.Path.GetFileName(fullPath);
                            // _file.Id = request.ResponseBody.Id;

                            Google.Apis.Drive.v3.Data.File       file          = request.ResponseBody;
                            Google.Apis.Drive.v3.Data.Permission newPermission = new Google.Apis.Drive.v3.Data.Permission();
                            newPermission.EmailAddress = "*****@*****.**";
                            newPermission.Type         = "user";
                            newPermission.Role         = "writer";

                            Google.Apis.Drive.v3.PermissionsResource.CreateRequest insertRequest = service.Permissions.Create(newPermission, file.Id);
                            insertRequest.Execute();
                        }
                    }
                    else
                    {
                        using (var stream = new System.IO.FileStream(_path + _fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read))
                        {
                            var request = service.Files.Update(fileToUpload, isNew.Id, stream, fileToUpload.MimeType);
                            await request.UploadAsync();

                            response = request.ResponseBody;

                            var _file = new Google.Apis.Drive.v3.Data.File();
                            //_file.Name = System.IO.Path.GetFileName(fullPath);
                            _file.Id = request.ResponseBody.Id;

                            //Google.Apis.Drive.v3.Data.File file = request.ResponseBody;
                            Google.Apis.Drive.v3.Data.Permission newPermission = new Google.Apis.Drive.v3.Data.Permission();
                            newPermission.EmailAddress = "*****@*****.**";
                            newPermission.Type         = "user";
                            newPermission.Role         = "writer";

                            Google.Apis.Drive.v3.PermissionsResource.CreateRequest insertRequest = service.Permissions.Create(newPermission, _file.Id);
                            insertRequest.Execute();
                        }
                    }

                    service.Dispose();
                };

                if (response == null)
                {
                    return(String.Empty);
                }

                return(response.Id);
            }

            catch (Exception err)
            {
                Console.WriteLine(err.Message);
                return("ERRO: " + err.Message);
            }
        }
        public async Task <IActionResult> Create([Bind("Id,Judul,Tanggal,Path,Source,FImage,Kategori,Tag,Penulis,Status,DriveId,Parents")] Artikel artikel, IFormFile file)
        {
            try
            {
                if (ModelState.IsValid && file.Length > 0)
                {
                    artikel.Tanggal = DateTime.Now;
                    if (artikel.FImage != null)
                    {
                        artikel.FImage = artikel.FImage.Replace("file/d/", "uc?id=");
                        artikel.FImage = artikel.FImage.Replace("/view?usp=sharing", "");
                    }
                    if (artikel.FImage == null)
                    {
                        artikel.FImage = "/uploads/image/general/chart.png";
                    }
                    if (artikel.Penulis == null)
                    {
                        artikel.Penulis = "admin";
                    }
                    artikel.Status = 1;

                    DriveService service      = driveService.GetService();
                    var          folderId     = "1MeEImyGO6ma6mn9m-UiiNDNb9OX_F63S";
                    string       path         = Path.GetTempFileName();
                    var          fileMetadata = new Google.Apis.Drive.v3.Data.File()
                    {
                        Name    = Path.GetFileName(file.FileName),
                        Parents = new List <string>
                        {
                            folderId
                        }
                    };
                    FilesResource.CreateMediaUpload request;

                    using (var stream = new System.IO.FileStream(path, System.IO.FileMode.Open))
                    {
                        await file.CopyToAsync(stream);

                        request = service.Files.Create(
                            fileMetadata, stream, "application/pdf");
                        request.Fields = "id";
                        request.Upload();
                    }
                    var fileUploaded = request.ResponseBody;
                    artikel.DriveId = fileUploaded.Id;
                    artikel.Source  = "https://drive.google.com/uc?id=" + fileUploaded.Id;
                    artikel.Judul   = file.FileName;
                    artikel.Parents = folderId;

                    _context.Add(artikel);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(List)));
                }
                return(View(artikel));
            }
            catch (DbUpdateException /* ex */)
            {
                //Log the error (uncomment ex variable name and write a log.
                ModelState.AddModelError("", "Unable to save changes. " +
                                         "Try again, and if the problem persists " +
                                         "see your system administrator.");
            }
            return(View(artikel));
        }
Example #22
0
        private static void RequestResponseReceived(File obj)
        {
            string msg = "File uploaded to drive: " + obj.Name;

            Logger.LogMessage(msg);
        }
Example #23
0
        //private static CancellationTokenSource _tCancel;

        private static string GetOrCreateFolder(string path)
        {
            var c = Lookups.FirstOrDefault(p => p.Path == path);

            if (c != null)
            {
                return(c.ID);
            }

            string id = "root";
            var    l  = path.Split(Path.DirectorySeparatorChar);

            var req = Service.Files.List();

            req.Q = "mimeType='application/vnd.google-apps.folder' and trashed=false";
            //req.Fields = "parents";
            FileList filelist;

            try
            {
                filelist = req.Execute();
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
                return("");
            }
            foreach (string f in l)
            {
                if (f != "")
                {
                    bool found = false;
                    foreach (var cr in filelist.Files)
                    {
                        if (cr.Name == f)
                        {
                            found = true;
                            id    = cr.Id;
                            break;
                        }
                    }
                    if (!found)
                    {
                        var body = new File
                        {
                            Name        = f,
                            MimeType    = "application/vnd.google-apps.folder",
                            Description = "iSpy Folder",
                            Parents     = new List <string> {
                                id
                            }
                        };
                        File newFolder = Service.Files.Create(body).Execute();
                        id = newFolder.Id;
                    }
                }
            }
            //add id to list
            Lookups.Add(new LookupPair {
                ID = id, Path = path
            });
            return(id);
        }
 private static void UploadRequest_ResponseReceived(File obj)
 {
 }
Example #25
0
        public static async Task <string> UploadFull(DriveService _service, string _fileName, string _path, string _folderId)
        {
            try
            {
                Google.Apis.Drive.v3.Data.File response = new Google.Apis.Drive.v3.Data.File();

                using (var service = _service)
                {
                    service.HttpClient.Timeout = TimeSpan.FromHours(4);
                    var fileToUpload = new Google.Apis.Drive.v3.Data.File()
                    {
                        Name     = _fileName,
                        MimeType = MimeTypesMap.GetMimeType(System.IO.Path.GetExtension(_path)),
                        Parents  = new List <string>
                        {
                            _folderId
                        }
                    };
                    service.HttpClient.Timeout = TimeSpan.FromHours(4);


                    // *** Aqui validar se é para Atualizar ou criar !!! ***
                    // 1 - Caso existe verificar se o mesmo id encontra no GDrive
                    var isNew = await FindInGoogleDriveFull(_fileName, _folderId, service);

                    if (String.IsNullOrEmpty(isNew.DriveId))
                    {
                        using (var stream = new System.IO.FileStream(_path + _fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read))
                        {
                            var request = service.Files.Create(fileToUpload, stream, fileToUpload.MimeType);
                            var valid   = await request.UploadAsync();

                            if (valid.Status != Google.Apis.Upload.UploadStatus.Completed)
                            {
                                HelperLogs.WriteLog(DateTime.Now + "Resposta de Upload ainda nao completa.");

                                for (int i = 0; i < 3; i++)
                                {
                                    await Task.Delay(3000);

                                    if (valid.Status != Google.Apis.Upload.UploadStatus.Completed)
                                    {
                                        i = 3;
                                    }
                                }
                            }

                            response = request.ResponseBody;
                        }
                    }
                    else
                    {
                        using (var stream = new System.IO.FileStream(_path + _fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read))
                        {
                            var request = service.Files.Update(fileToUpload, isNew.Id, stream, fileToUpload.MimeType);
                            await request.UploadAsync();

                            response = request.ResponseBody;

                            var _file = new Google.Apis.Drive.v3.Data.File();
                            //_file.Name = System.IO.Path.GetFileName(fullPath);
                            _file.Id = request.ResponseBody.Id;
                        }
                    }

                    service.Dispose();
                };

                if (response == null)
                {
                    return(String.Empty);
                }

                return(response.Id);
            }
            catch (Exception err)
            {
                return(err.Message);
            }
        }
Example #26
0
        /// <summary>
        /// 在資料夾中建立新的檔案
        /// </summary>
        /// <param name="_service"></param>
        /// <param name="parentid"></param>
        /// <param name="_uploadFile"></param>
        /// <returns></returns>
        public static GData.File CreateFile(DriveService _service, string parentid, string _uploadFilePath)
        {
            GData.File ResultFile;
            //var FileMetaData = new Google.Apis.Drive.v3.Data.File()
            //{
            //    Name = Path.GetFileName(path),
            //    MimeType = GetMimeType(path),
            //    //id of parent folder
            //    Parents = new List<string>
            //    {
            //        folderId
            //    }
            //};
            //FilesResource.CreateMediaUpload request;
            ////create stream and upload
            //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;

            if (System.IO.File.Exists(_uploadFilePath))
            {
                GData.File FileMetaData = new GData.File();
                FileMetaData.Name        = System.IO.Path.GetFileName(_uploadFilePath);
                FileMetaData.Description = "";
                FileMetaData.MimeType    = GetMimeType(_uploadFilePath);
                FileMetaData.Parents     = new List <string> {
                    parentid
                };

                FilesResource.CreateMediaUpload request;
                //create stream and upload
                using (var stream = new System.IO.FileStream(_uploadFilePath, System.IO.FileMode.Open))
                {
                    request        = _service.Files.Create(FileMetaData, stream, FileMetaData.MimeType);
                    request.Fields = "id";
                    request.Upload();
                }

                ResultFile = request.ResponseBody;

                //byte[] byteArray = System.IO.File.ReadAllBytes(_uploadFile);
                //System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);
                //try
                //{
                //    FilesResource.CreateMediaUpload request = _service.Files.Create(body, stream, GetMimeType(_uploadFile));
                //    request.Upload();
                //    return request.ResponseBody;
                //}
                //catch (Exception e)
                //{
                //    Console.WriteLine("An error occurred: " + e.Message);
                //    return null;
                //}
            }
            else
            {
                Console.WriteLine("File does not exist: " + _uploadFilePath);
                return(null);
            }

            return(ResultFile);
        }
Example #27
0
        /// <summary>
        /// Asynchronously uploads the file.
        /// </summary>
        /// <returns></returns>
        protected override async Task<SerializableAPIResult<CloudStorageServiceAPIFile>> UploadFileAsync()
        {
            SerializableAPIResult<CloudStorageServiceAPIFile> result = new SerializableAPIResult<CloudStorageServiceAPIFile>();

            try
            {
                m_fileId = m_fileId ?? await GetFileIdAsync().ConfigureAwait(false);

                byte[] content = Util.GZipCompress(SettingsFileContentByteArray).ToArray();

                using (DriveService client = GetClient())
                using (Stream stream = Util.GetMemoryStream(content))
                {
                    ResumableUpload<GoogleFile, GoogleFile> request;
                    GoogleFile fileMetadata = new GoogleFile { Name = SettingsFileNameWithoutExtension };
                    if (String.IsNullOrWhiteSpace(m_fileId))
                    {
                        //Upload
                        fileMetadata.Parents = new List<string> { Spaces };
                        request = client.Files.Create(fileMetadata, stream, ContentType);
                        ((FilesResource.CreateMediaUpload)request).Fields = "id, name";
                    }
                    else
                    {
                        //Update
                        request = client.Files.Update(fileMetadata, m_fileId, stream, ContentType);
                        ((FilesResource.UpdateMediaUpload)request).AddParents = Spaces;
                        ((FilesResource.UpdateMediaUpload)request).Fields = "id, name";
                    }

                    // Do the actual upload
                    IUploadProgress response = await request.UploadAsync().ConfigureAwait(false);
                    m_fileId = request.ResponseBody?.Id;

                    // Chceck response for exception
                    if (response.Exception != null)
                    {
                        result.Error = new SerializableAPIError { ErrorMessage = response.Exception.Message };
                    }
                }
            }
            catch (GoogleApiException exc)
            {
                result.Error = new SerializableAPIError { ErrorMessage = exc.Error.Message };
            }
            catch (TokenResponseException exc)
            {
                IsAuthenticated = false;
                result.Error = new SerializableAPIError { ErrorMessage = exc.Error.ErrorDescription ?? exc.Error.Error };
            }
            catch (Exception exc)
            {
                result.Error = new SerializableAPIError { ErrorMessage = exc.Message };
            }

            return result;
        }
        /// <summary>
        /// Asynchronously uploads the file.
        /// </summary>
        /// <returns></returns>
        protected override async Task <SerializableAPIResult <CloudStorageServiceAPIFile> > UploadFileAsync()
        {
            SerializableAPIResult <CloudStorageServiceAPIFile> result = new SerializableAPIResult <CloudStorageServiceAPIFile>();

            try
            {
                m_fileId = m_fileId ?? await GetFileIdAsync().ConfigureAwait(false);

                byte[] content = Util.GZipCompress(SettingsFileContentByteArray).ToArray();

                using (DriveService client = GetClient())
                    using (Stream stream = Util.GetMemoryStream(content))
                    {
                        ResumableUpload <GoogleFile, GoogleFile> request;
                        GoogleFile fileMetadata = new GoogleFile {
                            Name = SettingsFileNameWithoutExtension
                        };
                        if (String.IsNullOrWhiteSpace(m_fileId))
                        {
                            //Upload
                            fileMetadata.Parents = new List <string> {
                                Spaces
                            };
                            request = client.Files.Create(fileMetadata, stream, ContentType);
                            ((FilesResource.CreateMediaUpload)request).Fields = "id, name";
                        }
                        else
                        {
                            //Update
                            request = client.Files.Update(fileMetadata, m_fileId, stream, ContentType);
                            ((FilesResource.UpdateMediaUpload)request).AddParents = Spaces;
                            ((FilesResource.UpdateMediaUpload)request).Fields     = "id, name";
                        }

                        // Do the actual upload
                        IUploadProgress response = await request.UploadAsync().ConfigureAwait(false);

                        m_fileId = request.ResponseBody?.Id;

                        // Chceck response for exception
                        if (response.Exception != null)
                        {
                            result.Error = new SerializableAPIError {
                                ErrorMessage = response.Exception.Message
                            };
                        }
                    }
            }
            catch (GoogleApiException exc)
            {
                result.Error = new SerializableAPIError {
                    ErrorMessage = exc.Error.Message
                };
            }
            catch (TokenResponseException exc)
            {
                IsAuthenticated = false;
                result.Error    = new SerializableAPIError {
                    ErrorMessage = exc.Error.ErrorDescription ?? exc.Error.Error
                };
            }
            catch (Exception exc)
            {
                result.Error = new SerializableAPIError {
                    ErrorMessage = exc.Message
                };
            }

            return(result);
        }
Example #29
0
        public static Google.Apis.Drive.v3.Data.File GetItem(string ItemPath, bool GetTrashed = false)
        {
            Google.Apis.Drive.v3.Data.File file = null;

            try
            {
                file = _service.Files.Get(ItemPath).Execute();
                return(file);
            }
            catch (Exception)
            {
                ItemPath = ItemPath.Trim();
                ItemPath = ItemPath.Replace("\\", "/");

                if (ItemPath[0] == '/')
                {
                    ItemPath = ItemPath.Substring(1, ItemPath.Length - 1);
                }

                if (ItemPath[ItemPath.Length - 1] == '/')
                {
                    ItemPath = ItemPath.Substring(0, ItemPath.Length - 1);
                }

                int    PathArrayIndex = 0;
                var    PathArray      = ItemPath.Split('/');
                string ParentID       = "root";
                bool   found;

                FilesResource.ListRequest request = _service.Files.List();
                request.Fields = "nextPageToken, files(id, name, size, version, trashed, mimeType, createdTime)";

                IList <Google.Apis.Drive.v3.Data.File> items;

                for (int i = 0; i < PathArray.Length; i++)
                {
                    // Code similar to Dir()
                    request.Q = $"parents = '{ParentID}'";

                    try
                    {
                        items = request.Execute().Files;
                    }
                    catch (Exception)
                    {
                        return(null);
                    }

                    if (items != null && items.Count > 0)
                    {
                        found = false;

                        foreach (var item in items)
                        {
                            if (item.Name == PathArray[PathArrayIndex])
                            {
                                if (GetTrashed == false && item.Trashed == true)
                                {
                                    continue;
                                }

                                ParentID = item.Id;
                                file     = item;
                                found    = true;
                                PathArrayIndex++;
                                break;
                            }
                        }

                        if (found == false)
                        {
                            return(null);;
                        }
                    }
                    else
                    {
                        return(null);;
                    }
                }

                return(file);
            }
        }
Example #30
0
        public static Google.Apis.Drive.v3.Data.File CreateFolderStructure(string FolderPath, bool Trashed = false)
        {
            FolderPath = FolderPath.Trim();
            FolderPath = FolderPath.Replace("\\", "/");

            if (FolderPath[0] == '/')
            {
                FolderPath = FolderPath.Substring(1, FolderPath.Length - 1);
            }

            if (FolderPath[FolderPath.Length - 1] == '/')
            {
                FolderPath = FolderPath.Substring(0, FolderPath.Length - 1);
            }

            string[] PathArray = FolderPath.Split('/');

            int    i, j;
            string ParentFolder, FolderID = "root";

            Google.Apis.Drive.v3.Data.File file = null;

            for (i = PathArray.Length - 1; i >= 0; i--)
            {
                ParentFolder = PathArray[0];

                for (j = 1; j <= i; j++)
                {
                    ParentFolder = ParentFolder + "/" + PathArray[j];
                }

                file = GetItem(ParentFolder);

                if (file != null)
                {
                    if (i == PathArray.Length - 1)
                    {
                        throw new AlreadyExistException($"Folder '{FolderPath}' Already Exists, ID = '{file.Id}'", file);
                    }

                    FolderID = file.Id;
                    break;
                }
                //else
                //{
                //    ParentFolder = Directory.GetParent(ParentFolder).FullName;
                //}
            }

            if (i == -1)
            {
                FolderID = "root";
            }

            for (j = i + 1; j <= PathArray.Length - 1; j++)
            {
                try
                {
                    file     = CreateFolder(PathArray[j], FolderID);
                    FolderID = file.Id;
                }
                catch (Exception)
                {
                    throw new Exception($"Error in Creating Folder '{PathArray[j]}' in '{FolderID}'");
                }
            }

            return(file);
        }
Example #31
0
        public static Google.Apis.Drive.v3.Data.File CreateFolder(string FolderName, string Parent = "root")
        {
            Google.Apis.Drive.v3.Data.File file;
            string ParentID = Parent;

            if (ParentID != "root")
            {
                file = GetItem(ParentID);

                if (file == null)
                {
                    throw new Exception($"Invalid Parent ID '{ParentID}'");
                }

                ParentID = file.Id;
            }

            List <Google.Apis.Drive.v3.Data.File> items;

            try
            {
                items = Dir(ParentID);
            }
            catch (Exception Ex)
            {
                throw Ex;
            }

            if (items != null && items.Count > 0)
            {
                foreach (var item in items)
                {
                    if (item.Name == FolderName)
                    {
                        throw new AlreadyExistException($"Folder '{FolderName}' Already Exists in '{Parent}', ID = '{item.Id}'", item);
                    }
                }
            }

            var FileMetadata = new Google.Apis.Drive.v3.Data.File()
            {
                Name     = FolderName,
                MimeType = "application/vnd.google-apps.folder",
                Parents  = new List <string>()
                {
                    ParentID
                }
            };

            try
            {
                var request = _service.Files.Create(FileMetadata);
                request.Fields = "id";
                file           = request.Execute();
                return(file);
            }
            catch (Exception Ex)
            {
                throw new Exception($"Error in Creating Folder '{FolderName}' in '{ParentID}' : {Ex.Message}");
            }
        }
Example #32
-2
        public static bool ExecuteUpload(DriveService service, string fileId, string localPath, string cloudName)
        {
            byte[] byteArray = System.IO.File.ReadAllBytes(localPath);
            System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);

            Google.Apis.Drive.v3.Data.File body = new Google.Apis.Drive.v3.Data.File();
            body.Description = "Uploaded from " + RecordKeeper.FormGlob.ClientName;

            FilesResource.UpdateMediaUpload request =  service.Files.Update(body, fileId, stream, GetMimeType(localPath));
            request.Upload();
            Google.Apis.Drive.v3.Data.File response = request.ResponseBody;
            return (response != null);
        }
        public async Task<bool> Save(Stream stream, string path)
        {
            var api = await GetApi();

            IUploadProgress progress;

            var file = await api.GetFileByPath(path);
            if (file != null)
            {
                progress = await api.Files.Update(null, file.Id, stream, "application/octet-stream").UploadAsync();
            }
            else // not found: creating new
            {

                var folderName = Path.GetDirectoryName(path);
                var fileName = Path.GetFileName(path);

                var folder = await api.GetFileByPath(folderName);
                if (folder == null)
                    throw new InvalidOperationException(string.Format("Folder does not exist: {0}", folderName));

                file = new File()
                {
                    Name = fileName,
                    Parents = new[] {folder.Id},
                };

                progress = await api.Files.Create(file, stream, "application/octet-stream").UploadAsync();
            }

            return progress.Status == UploadStatus.Completed && progress.Exception == null;
        }