public static async Task <bool> UploadGoogleFile(string fileName, string fileId) { if (!System.IO.File.Exists(fileName) || !Storage.xs.Settings.IsGDriveOn()) { return(false); } byte[] byteArray = System.IO.File.ReadAllBytes(fileName); System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray); try { File body = new File(); FilesResource.UpdateMediaUpload req = _service.Files.Update(body, fileId, stream, "application/json"); var progress = await req.UploadAsync(); File response = req.ResponseBody; } catch (Exception) { return(false); } return(true); }
//-------------------------------------------------------------------------------------------------- public static async Task <Google.Apis.Drive.v3.Data.File> UpdateFileAsync(string fileId, Stream stream, string mimeType = "application/octet-stream") { Google.Apis.Drive.v3.Data.File body = new Google.Apis.Drive.v3.Data.File(); FilesResource.UpdateMediaUpload req = Service.Files.Update(body, fileId, stream, mimeType); //req.KeepRevisionForever = true; await req.UploadAsync(); return(req.ResponseBody); }
public async Task UploadFileAsync(string fileId, Stream stream, Google.Apis.Drive.v3.Data.File file = null) { if (file == null) { file = new Google.Apis.Drive.v3.Data.File(); } FilesResource.UpdateMediaUpload updateMediaUpload = service.Files.Update(file, fileId, stream, file.MimeType); await updateMediaUpload.UploadAsync(); }
public async Task Upload(VersionedData data) { var storageToUpdate = new File { Name = (await _remoteStorageInfoRepository.GetRemoteStorageInfo()).Name }; using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data)))) { FilesResource.UpdateMediaUpload updateRequest = _service.Files.Update(storageToUpdate, (await _remoteStorageInfoRepository.GetRemoteStorageInfo()).Id, stream, DataFileContentType); await updateRequest.UploadAsync(); } }
/// <summary> /// Upload or update a file to Google Drive /// </summary> /// <param name="file">the path to the file</param> /// <param name="type">the type of the file</param> /// <returns></returns> public async Task <File> UploadFile(string file, ResourceType type) { await Initialize(); // Initialize Google Drive Service var fileMetaData = new File { Name = Path.GetFileName(file), MimeType = MimeTypeDictionary.GetMimeType(Path.GetExtension(file)), Description = @"Uploaded by the Vacancy Scraper application" }; if (await DoesFileExistInDriveAndFindFilesIfNot(type)) // update the already existing file { using (var stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) { FilesResource.UpdateMediaUpload request = null; switch (type) { case ResourceType.Vacancies: request = _service.Files.Update(fileMetaData, _settingsManager.Settings.GoogleDriveVacanciesFileId, stream, fileMetaData.MimeType); break; case ResourceType.Blacklist: request = _service.Files.Update(fileMetaData, _settingsManager.Settings.GoogleDriveBlacklistFileId, stream, fileMetaData.MimeType); break; case ResourceType.Done: request = _service.Files.Update(fileMetaData, _settingsManager.Settings.GoogleDriveDoneFileId, stream, fileMetaData.MimeType); break; case ResourceType.Companies: request = _service.Files.Update(fileMetaData, _settingsManager.Settings.GoogleDriveCompaniesFileId, stream, fileMetaData.MimeType); break; default: break; } if (request == null) { return(null); } request.Fields = "id"; await request.UploadAsync(); Console.WriteLine(@"Updated " + fileMetaData.Name); return(request.ResponseBody); } } else // create new file { FilesResource.CreateMediaUpload request; using (var stream = new FileStream(file, FileMode.Open)) { request = _service.Files.Create(fileMetaData, stream, fileMetaData.MimeType); request.Fields = "id"; await request.UploadAsync(); Console.WriteLine(@"Uploaded " + fileMetaData.Name); } return(request.ResponseBody); } }
protected override void Start() { try { if (Status != StatusType.Queued) { throw new Exception("Stream has not been queued."); } base.Start(); _FileInfo = _DriveService.GetFile(FileId); if (_FileInfo == null) { throw new Exception("File '" + FileId + "' no longer exists."); } if (String.IsNullOrEmpty(_FileInfo.FilePath)) { throw new Exception("FileInfo.FilePath is blank."); } if (!System.IO.File.Exists(_FileInfo.FilePath)) { throw new Exception("FileInfo.FilePath '" + _FileInfo.FilePath + "' does not exist."); } Lock(_FileInfo.FilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite); _FileSize = _FileStream.Length; _LastWriteTime = API.DriveService.GetFileLastWriteTime(_FileInfo.FilePath); if (_FileInfo.IsGoogleDoc) { DriveService_ProgressChanged(UploadStatus.Completed, FileSize, null); } else { FileInfoStatus fileInfoStatus = API.DriveService.GetFileInfoStatus(_FileInfo); if (fileInfoStatus != FileInfoStatus.ModifiedOnDisk) { if (CheckIfAlreadyUploaded) { try { DriveService_ProgressChanged(UploadStatus.Completed, 0, null); return; } catch (Exception exception) { Log.Error(exception); } } } using (API.DriveService.Connection connection = API.DriveService.Connection.Create()) { Google.Apis.Drive.v2.Data.File file = _FileInfo._file; file.ModifiedDate = _LastWriteTime.ToUniversalTime(); FilesResource.UpdateMediaUpload request = connection.Service.Files.Update(file, file.Id, _FileStream, file.MimeType); request.ProgressChanged += DriveService_ProgressChanged; request.ResponseReceived += DriveService_ResponseReceived; request.Fields = API.DriveService.RequestFields.FileFields; if (ChunkSize <= 0) { request.ChunkSize = FilesResource.UpdateMediaUpload.DefaultChunkSize; } else if (ChunkSize < FilesResource.UpdateMediaUpload.MinimumChunkSize) { request.ChunkSize = FilesResource.UpdateMediaUpload.MinimumChunkSize; } else { request.ChunkSize = ChunkSize; } request.Convert = _Parameters.Convert; request.NewRevision = true; request.Ocr = _Parameters.Ocr; request.OcrLanguage = _Parameters.OcrLanguage; request.Pinned = _Parameters.Pinned; request.SetModifiedDate = true; request.TimedTextLanguage = _Parameters.TimedTextLanguage; request.TimedTextTrackName = _Parameters.TimedTextTrackName; request.UpdateViewedDate = _Parameters.UpdateViewedDate; request.UseContentAsIndexableText = _Parameters.UseContentAsIndexableText; _CancellationTokenSource = new System.Threading.CancellationTokenSource(); System.Threading.Tasks.Task <IUploadProgress> task = request.UploadAsync(_CancellationTokenSource.Token); } } } catch (Exception exception) { try { _Status = StatusType.Failed; _ExceptionMessage = exception.Message; DriveService_ProgressChanged(UploadStatus.Failed, 0, exception); } catch { Debugger.Break(); } Log.Error(exception); } }