public WcfFileInfoMessage UpdateFile(UpdateMessage updateMessage) { WcfFileInfoMessage fileInfo = null; try { if (updateMessage == null) { throw new ArgumentNullException("updateMessage"); } if (string.IsNullOrEmpty(updateMessage.FolderUrl)) { throw new ArgumentNullException("updateMessage.FolderUrl"); } if (updateMessage.FileUniqueID == null) { throw new ArgumentNullException("updateMessage.FileUniqueID"); } if (updateMessage.FileStream == null) { throw new ArgumentNullException("updateMessage.FileStream"); } if (updateMessage.AccessToken == Guid.Empty) { throw new ArgumentNullException("updateMessage.AccessToken"); } //проверка токена IToken token = this.Engine.MetadataAdapter.GetToken(updateMessage.AccessToken); if (token == null || !token.IsValid()) { throw new SecurityAccessDeniedException(string.Format("Access is denied.")); } this.Logger.WriteFormatMessage("UploadFileStream:Начало потоковой передачи данных файла"); //загружаем поток данных using (IFile file = this.Storage.GetFile(updateMessage.FolderUrl, updateMessage.FileUniqueID)) { file.Update(updateMessage.FileStream, updateMessage.FileName); fileInfo = WcfFileInfoMessage.FromFile(file); } //удаляем токен, после его использования this.Engine.MetadataAdapter.RemoveToken(updateMessage.AccessToken); this.Logger.WriteFormatMessage("UploadFileStream:Окончание потоковой передачи данных файла"); } catch (Exception ex) { this.Logger.WriteFormatMessage("UploadFileStream:Ошибка выполенения операции, текст ошибки: {0}", ex); throw ex; } return(fileInfo); }
/// <summary> /// Возвращает транспортный объект файла для передачи клиенту. /// </summary> /// <param name="file">Файл.</param> /// <param name="loadOptions">Опции загрузки.</param> /// <returns></returns> public static WcfFileInfoMessage FromFile(IFile file) { if (file == null) { throw new ArgumentNullException("file"); } WcfFileInfoMessage wcfFile = new WcfFileInfoMessage() { UniqueID = file.UniqueID, FolderUniqueID = file.Folder.UniqueID, VersionUniqueID = file.VersionUniqueID, Name = file.Name, TimeCreated = file.TimeCreated, TimeModified = file.TimeModified, FolderUrl = file.FolderUrl, Url = file.Url, Size = file.Size }; return(wcfFile); }