public CloudFiles AddFiles(Dictionary <string, object> items) { UniValue file = UniValue.Create((Dictionary <string, object>)items); var map = new ApiDataMapping(); map.Add("id", "FileID"); map.Add("title", "FileName"); map.Add("fileExtension", "Extention"); map.Add("downloadUrl", "DownUrl"); map.Add("thumbnailLink", "Thumnail"); map.Add("fileSize", "FileSize", typeof(long)); map.Add("modifiedDate", "modifiedDate"); FileInfo fi = new FileInfo(file, map); //fi.Path = "root"; fi.driveinfo = driveinfo; if (fi.Extention != null) { fi.DownUrl = "https://www.googleapis.com/drive/v2/files/" + fi.FileID + "?alt=media"; fi.IsFile = true; } else { fi.Path += fi.FileName + "/"; fi.IsFile = false; } GoogleFile files = new GoogleFile(fi); GoogleFiles.Add(files); return(files); }
private static void DownloadFolder(string folderId, string parentFolderPath) { FilesResource.GetRequest request = driveService.Files.Get(folderId); request.Fields = "name,mimeType"; GoogleFile fileInfo = request.Execute(); //Makesure metadata gives a folder type if (fileInfo.MimeType != folderMimeType) { Debug.LogWarning($"{folderId} is not a folder"); return; } IList <GoogleFile> subFolders = ListFolders(folderId); IList <GoogleFile> subFiles = ListFiles(folderId); string pathToNewFolder = parentFolderPath.Replace("/", "\\") + $"\\{fileInfo.Name}"; Directory.CreateDirectory(pathToNewFolder); //Download files in current folder foreach (GoogleFile subFile in subFiles) { DownloadFile(subFile.Id, pathToNewFolder); } //Recursively download subfolder stuff foreach (GoogleFile subFolder in subFolders) { DownloadFolder(subFolder.Id, pathToNewFolder); } }
/// <summary> /// 取得單一請假單詳細資訊 /// </summary> /// <param name="sqlLeave"></param> /// <param name="isManage"></param> /// <returns></returns> private Infrastructure.ViewModel.ActivityFunction.Leave.LeaveDetailViewModel GetDetailLeaveSqlQuery(AttendanceLeave sqlLeave, bool isManage) { var db = _uow.DbContext; var resLeaveVM = new Infrastructure.ViewModel.ActivityFunction.Leave.LeaveDetailViewModel(); resLeaveVM.FileList = new List <GoogleFile>(); //取得請假資訊 resLeaveVM.Comment = sqlLeave.Comment; resLeaveVM.CreateDate = sqlLeave.CreateDate.ToLocalTime(); resLeaveVM.Content = sqlLeave.Content; resLeaveVM.LeaveDate = sqlLeave.LeaveDate.ToLocalTime(); resLeaveVM.LeaveType = sqlLeave.LeaveType; resLeaveVM.Status = sqlLeave.Status; resLeaveVM.StudId = sqlLeave.StudId; resLeaveVM.Subject = sqlLeave.Subject; //取得狀態名稱 resLeaveVM.StatusName = Utility.ParaCondition.LeaveState.Status[sqlLeave.Status]; //申請人資訊 var applicationMemberInfo = db.Members.Find(sqlLeave.StudId); //請假單申請人姓名 resLeaveVM.MemberAccount = applicationMemberInfo.Account; //請假單申請人帳號 resLeaveVM.MemberName = applicationMemberInfo.Name; //請假單申請人頭像 resLeaveVM.MemberImg = applicationMemberInfo.Photo; //所屬課程名稱 resLeaveVM.CourseName = db.LearningCircle.Find(sqlLeave.LearningId).Name; //編碼eventId resLeaveVM.OuterKey = Utility.OuterKeyHelper.GuidToPageToken(sqlLeave.EventId); //取得請假單檔案資訊 var sqlFile = db.LeaveFile.Where(t => t.LeaveId == sqlLeave.Id); foreach (var _file in sqlFile) { var googleFile = db.GoogleFile.Find(_file.GoogleId); var _fileEntity = new GoogleFile() { Create_User = googleFile.Create_User, Create_Utc = googleFile.Create_Utc.ToLocalTime(), DownLoadUrl = googleFile.DownLoadUrl, FileId = googleFile.FileId, FileType = googleFile.FileType, Id = googleFile.Id, ImgUrl = googleFile.ImgUrl, Name = googleFile.Name, ParentFileId = googleFile.ParentFileId, Size = googleFile.Size, WebViewUrl = googleFile.WebViewUrl }; resLeaveVM.FileList.Add(_fileEntity); } resLeaveVM.IsManager = isManage; return(resLeaveVM); }
private static void DownloadFile(string fileId, string targetDirectory) { FilesResource.GetRequest request = driveService.Files.Get(fileId); request.Fields = "size,name,id,md5Checksum"; GoogleFile fileinfo = request.Execute(); var stream = new MemoryStream(); IDownloadProgress progress = request.DownloadWithStatus(stream); EditorCoroutineUtility.StartCoroutine(DownloadRoutine(progress, stream, fileId, fileinfo.Name, fileinfo.Size.Value, targetDirectory), Instance); WriteTasks.TryAdd(fileId, false); }
public CloudFiles GetRootFile() { FileInfo info = new FileInfo(); info.FileID = "root"; info.driveinfo = this.driveinfo; info.FileName = "root"; info.IsFile = false; CloudFiles file = new GoogleFile(info); return(file); }
public async Task AddFiles(string id) { try { GoogleFiles.Clear(); string query = "'" + id + "' in parents"; var parameter = new HttpParameterCollection { { "q", query }, { "access_token", driveinfo.token.access_token } }; var result = OAuthUtility.Get("https://www.googleapis.com/drive/v2/files", parameter); var map = new ApiDataMapping(); map.Add("id", "FileID"); map.Add("title", "FileName"); map.Add("fileExtension", "Extention"); map.Add("downloadUrl", "DownUrl"); map.Add("thumbnailLink", "Thumnail"); map.Add("fileSize", "FileSize", typeof(long)); map.Add("description", "Description"); map.Add("modifiedDate", "modifiedDate"); foreach (var item in result.CollectionItems.Items["items"].CollectionItems.Items.Values) { FileInfo fi = new FileInfo(item, map); fi.driveinfo = driveinfo; if (id == "root") { fi.Path = "Google/"; } if (fi.Extention != null) { fi.DownUrl = "https://www.googleapis.com/drive/v2/files/" + fi.FileID + "?alt=media"; fi.IsFile = true; } else { fi.Path += fi.FileName + "/"; fi.IsFile = false; } GoogleFile itemss = new GoogleFile(fi); GoogleFiles.Add(itemss); } } catch (Exception e) { MessageBox.Show(string.Format("구글 파일 불러오기 오류 : {0}", e)); } }
public override async Task AddFiles(string id) { FilesResource.ListRequest list = new FilesResource.ListRequest(service); string query = "'" + id + "' in parents"; GoogleFiles = new List <GoogleFile>(); try { list.MaxResults = 1000; if (query != null) { list.Q = query; } FileList filesFeed = list.Execute(); while (filesFeed.Items != null) { // Adding each item to the list. foreach (var item in filesFeed.Items) { GoogleFile gfile = new GoogleFile(service); gfile.Item = item; GoogleFiles.Add(gfile); } // We will know we are on the last page when the next page token is // null. // If this is the case, break. if (filesFeed.NextPageToken == null) { break; } list.PageToken = filesFeed.NextPageToken; filesFeed = list.Execute(); } } catch { //return null; } }
private async void NavigateToItem(CloudFiles item) { flowLayoutPanel_filecontent.Controls.Clear(); if ((item as GoogleFile) != null) { GoogleFile file = (GoogleFile)item; AllFolder newfolder = new GoogleFolder(file.Service); await newfolder.AddFiles(file.GetId()); LoadTile(newfolder); } else if ((item as OneDriveFile) != null) { OneDriveFile file = (OneDriveFile)item; AllFolder newfolder = new OneDriveFolder(file.Connect); await newfolder.AddFiles(file.GetId()); LoadTile(newfolder); } else { MessageBox.Show("파일 열기 실패"); } }
/// <summary> /// 新增一筆上傳檔案活動 /// </summary> /// <param name="circleKey"></param> /// <param name="memberId"></param> /// <param name="name"></param> /// <param name="googleDriveFileId"></param> /// <param name="folderId"></param> /// <param name="fileType"></param> /// <param name="fileSize"></param> /// <param name="fileShortImg"></param> /// <returns></returns> public Infrastructure.BusinessObject.MaterialEvent Add(string circleKey, int memberId, string name, string googleDriveFileId, string folderId, string fileType, int fileSize, string fileShortImg) { Guid eveId = Guid.NewGuid(); DateTime?dt = DateTime.UtcNow; int id = cacheService.GetCircle(circleKey).Id; using (var db = _uow.DbContext) { using (var dbTransaction = db.Database.BeginTransaction()) { try { #region // 1. 建立上傳檔案活動物件 var objMaterial = new ActMaterial() { LearningId = id, Name = name, EventId = eveId, CreateUser = memberId, Created = Infrastructure.Property.TimeData.Create(dt), Updated = Infrastructure.Property.TimeData.Create(null), Deleted = Infrastructure.Property.TimeData.Create(null), GoogleDriveFileId = googleDriveFileId, FileImgUrl = string.Format("https://drive.google.com/a/g.scenet.pccu.edu.tw/uc?id={0}&export=download", googleDriveFileId), FileLength = fileSize, FileType = fileType, GoogleDriveFolder = folderId }; #endregion #region // 2. 替上傳檔案活動建立一筆訊息物件 Activitys objAct = new Activitys() { Duration = 0, ModuleKey = Utility.ParaCondition.ModuleType.Material, ToRoomId = circleKey, CreateUser = memberId, Created = Infrastructure.Property.TimeData.Create(dt), Updated = Infrastructure.Property.TimeData.Create(null), Deleted = Infrastructure.Property.TimeData.Create(null), OuterKey = eveId, StartDate = dt, IsActivity = true, CardisShow = true, Publish_Utc = dt }; #endregion #region // 3. 建立一筆Google檔案 var objGoogle = new GoogleFile() { DownLoadUrl = string.Format("https://drive.google.com/a/g.scenet.pccu.edu.tw/uc?id={0}&export=download", googleDriveFileId), FileId = googleDriveFileId, FileType = fileType, ImgUrl = string.Format("https://drive.google.com/a/g.scenet.pccu.edu.tw/uc?id={0}&export=download", fileShortImg), WebViewUrl = string.Format("https://drive.google.com/a/g.scenet.pccu.edu.tw/file/d/{0}/view?usp=drivesdk", googleDriveFileId), Name = name, ParentFileId = folderId, Size = fileSize, Create_User = memberId, Create_Utc = Convert.ToDateTime(dt) }; #endregion // 3. 寫入DB db.ActMaterial.Add(objMaterial); db.Activitys.Add(objAct); db.GoogleFile.Add(objGoogle); db.SaveChanges(); dbTransaction.Commit(); } catch (Exception ex) { dbTransaction.Rollback(); throw ex; } } } #region // 回傳給APP的物件 var data = new Infrastructure.BusinessObject.MaterialEvent() { ClassId = circleKey, OuterKey = eveId, Creator = memberId.ToString(), CreateDate = Convert.ToDateTime(dt) }; #endregion return(data); }
public async Task <string> AddThumbnails() { Response.Headers.Add("Cache-Control", "no-cache"); string result = string.Empty; string newFolderId = null; string imagesFolderId = null; string accountName = this._httpContextAccessor.HttpContext.Request.Headers[DriveImportConstants.VTEX_ACCOUNT_HEADER_NAME]; FolderIds folderIds = await _driveImportRepository.LoadFolderIds(accountName); if (folderIds != null) { newFolderId = folderIds.NewFolderId; imagesFolderId = folderIds.ImagesFolderId; ListFilesResponse imageFiles = new ListFilesResponse(); imageFiles.Files = new List <GoogleFile>(); string nextPageToken = string.Empty; do { ListFilesResponse listFilesResponse = await _googleDriveService.ListImagesInFolder(newFolderId, nextPageToken); imageFiles.Files.AddRange(listFilesResponse.Files); nextPageToken = listFilesResponse.NextPageToken; } while (!string.IsNullOrEmpty(nextPageToken)); ListFilesResponse spreadsheets = await _googleDriveService.ListSheetsInFolder(imagesFolderId); if (imageFiles != null && spreadsheets != null) { var sheetIds = spreadsheets.Files.Select(s => s.Id); if (sheetIds != null) { foreach (var sheetId in sheetIds) { Dictionary <string, int> headerIndexDictionary = new Dictionary <string, int>(); string sheetContent = await _googleDriveService.GetSheet(sheetId, string.Empty); GoogleSheet googleSheet = JsonConvert.DeserializeObject <GoogleSheet>(sheetContent); string valueRange = googleSheet.ValueRanges[0].Range; string sheetName = valueRange.Split("!")[0]; string[] sheetHeader = googleSheet.ValueRanges[0].Values[0]; int headerIndex = 0; int rowCount = googleSheet.ValueRanges[0].Values.Count(); int writeBlockSize = rowCount; foreach (string header in sheetHeader) { headerIndexDictionary.Add(header.ToLower(), headerIndex); headerIndex++; } string[][] arrValuesToWrite = new string[writeBlockSize][]; for (int index = 1; index < rowCount; index++) { string imageFileName = string.Empty; string[] dataValues = googleSheet.ValueRanges[0].Values[index]; if (headerIndexDictionary.ContainsKey("image") && headerIndexDictionary["image"] < dataValues.Count()) { imageFileName = dataValues[headerIndexDictionary["image"]]; } GoogleFile file = imageFiles.Files.FirstOrDefault(f => f.Name.Equals(imageFileName)); if (file != null) { string[] row = new string[headerIndexDictionary.Count]; row[headerIndexDictionary["thumbnail"]] = $"=IMAGE(\"{ file.ThumbnailLink}\")"; arrValuesToWrite[index - 1] = row; } } string lastColumn = ((char)(headerIndexDictionary.Count + 65)).ToString(); ValueRange valueRangeToWrite = new ValueRange { Range = $"{sheetName}!A2:{lastColumn}{rowCount + 1}", Values = arrValuesToWrite }; await _googleDriveService.WriteSpreadsheetValues(sheetId, valueRangeToWrite); } } } } return(result); }
/// <summary> /// 查詢請假資訊 /// </summary> /// <param name="sqlLeave"></param> /// <param name="isManager"></param> /// <returns></returns> private List <Infrastructure.ViewModel.ActivityFunction.Leave.LeaveViewModel> GetLeaveSqlQuery(IQueryable <AttendanceLeave> sqlLeave, bool isManager) { var result = new List <Infrastructure.ViewModel.ActivityFunction.Leave.LeaveViewModel>(); var db = _uow.DbContext; foreach (var _item in sqlLeave.OrderByDescending(t => t.Id)) { var resLeaveVM = new Infrastructure.ViewModel.ActivityFunction.Leave.LeaveViewModel(); var learningInfo = db.LearningCircle.Find(_item.LearningId); resLeaveVM.CourseName = learningInfo.Name; resLeaveVM.FileList = new List <GoogleFile>(); //取得請假資訊 resLeaveVM.Info = new AttendanceLeave() { Comment = _item.Comment, CreateDate = _item.CreateDate.ToLocalTime(), EventId = _item.EventId, Content = _item.Content, Creator = _item.Creator, Id = _item.Id, LearningId = _item.LearningId, LeaveDate = _item.LeaveDate.ToLocalTime(), LeaveType = _item.LeaveType, Status = _item.Status, StudId = _item.StudId, Subject = _item.Subject }; if (_item.UpdateTime != null) { resLeaveVM.Info.UpdateTime = _item.UpdateTime.Value.ToLocalTime(); } var applicationMemberInfo = db.Members.Find(_item.StudId); //請假單申請人姓名 resLeaveVM.MemberAccount = applicationMemberInfo.Account; //請假單申請人帳號 resLeaveVM.MemberName = applicationMemberInfo.Name; //編碼eventId resLeaveVM.OuterKey = Utility.OuterKeyHelper.GuidToPageToken(_item.EventId); //取得狀態名稱 resLeaveVM.StatusName = Utility.ParaCondition.LeaveState.Status[_item.Status]; //取得請假單檔案資訊 var sqlFile = db.LeaveFile.Where(t => t.LeaveId == _item.Id); foreach (var _file in sqlFile) { var googleFile = db.GoogleFile.Find(_file.GoogleId); var _fileEntity = new GoogleFile() { Create_User = googleFile.Create_User, Create_Utc = googleFile.Create_Utc.ToLocalTime(), DownLoadUrl = googleFile.DownLoadUrl, FileId = googleFile.FileId, FileType = googleFile.FileType, Id = googleFile.Id, ImgUrl = googleFile.ImgUrl, Name = googleFile.Name, ParentFileId = googleFile.ParentFileId, Size = googleFile.Size, WebViewUrl = googleFile.WebViewUrl }; resLeaveVM.FileList.Add(_fileEntity); } resLeaveVM.IsManager = isManager; result.Add(resLeaveVM); } return(result); }