Beispiel #1
0
        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);
        }