/// <summary> /// Обновляет содержимое файла в хранилище. /// </summary> /// <param name="folderUrl">Адрес папки.</param> /// <param name="fileUniqueID">Уникальный идентификатор файла.</param> /// <param name="content">Содержимое файла.</param> /// <param name="fileName">Имя файла.</param> /// <returns></returns> public WcfFileInfo UpdateFile(string folderUrl, Guid fileUniqueID, byte[] content, string fileName = null) { WcfFileInfo wcfFile = null; try { this.Authorize(); if (string.IsNullOrEmpty(folderUrl)) { throw new ArgumentNullException("folderUrl"); } if (fileUniqueID == Guid.Empty) { throw new ArgumentNullException("fileUniqueID"); } if (content == null || content.Length == 0) { throw new ArgumentNullException("content"); } this.Logger.WriteFormatMessage("UpdateFile:Начало обновления содержимого файла, folderUrl: {0}, fileUniqueID: {1}, contentLength: {2}", folderUrl, fileUniqueID, content.LongLength); using (MemoryStream ms = new MemoryStream(content)) { using (IFile file = this.Storage.GetFile(folderUrl, fileUniqueID)) { file.Update(ms, fileName); wcfFile = WcfFileInfo.FromFile(file); } } this.Logger.WriteFormatMessage("UpdateFile:Окончание обновления содержимого файла, folderUrl: {0}, fileUniqueID: {1}, contentLength: {2}", folderUrl, fileUniqueID, content.LongLength); } catch (Exception ex) { this.Logger.WriteFormatMessage("UpdateFile:Ошибка выполенения операции, текст ошибки: {0}", ex); throw ex; } return(wcfFile); }
/// <summary> /// Загружает файл в хранилище. /// </summary> /// <param name="folderUrl">Адрес папки.</param> /// <param name="fileName">Имя файла.</param> /// <param name="content">Содержимое файла.</param> /// <returns></returns> public WcfFileInfo UploadFile(string folderUrl, string fileName, byte[] content) { WcfFileInfo wcfFile = null; try { this.Authorize(); if (string.IsNullOrEmpty(folderUrl)) { throw new ArgumentNullException("folderUrl"); } if (string.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } if (content == null) { throw new ArgumentNullException("content"); } this.Logger.WriteFormatMessage("UploadFile:Начало загрузки файла, folderUrl: {0}, fileName: {1}, contentLength: {2}", folderUrl, fileName, content.LongLength); using (MemoryStream ms = new MemoryStream(content)) { using (IFile file = this.Storage.UploadFile(folderUrl, fileName, ms)) { wcfFile = WcfFileInfo.FromFile(file); } } this.Logger.WriteFormatMessage("UploadFile:Окончание загрузки файла, folderUrl: {0}, fileName: {1}, contentLength: {2}", folderUrl, fileName, content.LongLength); } catch (Exception ex) { this.Logger.WriteFormatMessage("UploadFile:Ошибка выполенения операции, текст ошибки: {0}", ex); throw ex; } return(wcfFile); }
/// <summary> /// Возвращает файл. /// </summary> /// <param name="folderUrl">Адрес папки.</param> /// <param name="fileUniqueID">Уникальный идентификатор файла.</param> /// <param name="loadOptions">Опции загрузки.</param> /// <returns></returns> public WcfFileInfo GetFile(string folderUrl, Guid fileUniqueID, GetFileOptions loadOptions = null) { WcfFileInfo wcfFile = null; try { this.Authorize(); if (string.IsNullOrEmpty(folderUrl)) { throw new ArgumentNullException("folderUrl"); } if (fileUniqueID == Guid.Empty) { throw new ArgumentNullException("fileUniqueID"); } this.Logger.WriteFormatMessage("GetFile:Начало получения файла, folderUrl: {0}, fileUniqueID: {1}", folderUrl, fileUniqueID); //файл выбираем всегда без содержимого, чтобы не превысить размер буферной передачи, //которая известна только на уровне транспорта using (IFile file = this.Storage.GetFile(folderUrl, fileUniqueID)) { if (loadOptions != null && loadOptions.LoadContent) { this.VerifyBufferSize(file.Size); } wcfFile = WcfFileInfo.FromFile(file, loadOptions); } this.Logger.WriteFormatMessage("GetFile:Окончание получения файла, folderUrl: {0}, fileUniqueID: {1}", folderUrl, fileUniqueID); } catch (Exception ex) { this.Logger.WriteFormatMessage("GetFile:Ошибка выполенения операции, текст ошибки: {0}", ex); throw ex; } return(wcfFile); }