public void CreatesRemotePath() { var entityId = Guid.NewGuid(); var fileId = Guid.NewGuid(); var file = new EntityFile(1, "AccountFile", entityId, fileId, 1, new byte[] { 0 }); var remotePath = file.GetRemotePath(); Assert.NotNull(file); Assert.NotNull(file.Entity); Assert.NotNull(file.EntityId); Assert.NotNull(file.FileId); Assert.NotNull(file.Version); Assert.Equal($"AccountFile/{entityId.ToString()}/{fileId.ToString()}/1", remotePath); }
/// <summary> /// Помещает файл в файловое хранилище. /// </summary> /// <param name="entityFile">Выгружаемый файл</param> /// <param name="allFiles">Все файлы сущности</param> public async Task <bool> PutWithHttp(EntityFile entityFile, IEnumerable <EntityFile> allFiles) { if (entityFile?.Data == null || !(entityFile.FolderNames?.Count > 0)) { return(false); } try { using (var handler = new HttpClientHandler { Credentials = new NetworkCredential(UserName, Password), PreAuthenticate = true }) using (var client = new HttpClient(handler) { BaseAddress = new Uri(ServerUrl) }) { var requestMessage = new HttpRequestMessage(HttpMethod.Put, new Uri(ServerUrl + entityFile.GetRemotePath())) { Content = new ByteArrayContent(entityFile.Data), Version = HttpVersion.Version11, Headers = { { HttpRequestHeader.Translate.ToString(), "f" }, { HttpRequestHeader.ContentType.ToString(), "application/octet-stream" }, { HttpRequestHeader.ContentLength.ToString(), entityFile.Data.ToString() } } }; var result = await client.SendAsync(requestMessage, HttpCompletionOption.ResponseContentRead); var entityFiles = allFiles.ToList(); Log.Info(Utils.ShowPercentProgress("Выгружаем файлы", entityFiles.IndexOf(entityFile), entityFiles.Count)); Log.Info($"Файл: #{entityFile.Number.ToString()} {entityFile.Entity}/{entityFile.EntityId}/{entityFile.FileId}/{entityFile.Version} {entityFile.Data.Length / 1024.0:####0.######} КБ ({entityFile.Data.Length / (1024.0 * 1024.0):####0.######} МБ) {result.StatusCode.ToString()}"); return(true); } } catch (WebException ex) { Console.WriteLine(ex.Message); Log.Debug(ex); return(false); } catch (Exception ex) { ExceptionHandler.LogExceptionToConsole(ex); throw ex; } }