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! "); }
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); }
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); }
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); } }
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 * { * * }*/ }
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); */ }
public static bool IsNewer(FileInfo localFile, DriveData.File driveFile) { var diff = localFile.LastWriteTime - driveFile.ModifiedTime.Value; return(diff.TotalSeconds >= kTimeEpsilon); }
/// 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); }
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"); } }
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(); } } }
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); }
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); }
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)); }
private static void RequestResponseReceived(File obj) { string msg = "File uploaded to drive: " + obj.Name; Logger.LogMessage(msg); }
//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) { }
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); } }
/// <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); }
/// <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); }
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); } }
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); }
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}"); } }
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; }