static void Main(string[] args) { string s = @"Text:file.txt(6B);Some string content Image:img.bmp(19MB);1920x1080 Text:data.txt(12B);Another string Text:data1.txt(7B);Yet another string Movie:logan.2017.mkv(19GB);1920x1080;2h12m"; var arr = s.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in arr) { Console.WriteLine(item); } Console.WriteLine(); List <File> files = new List <File>(); foreach (var item in arr) { //Console.WriteLine("->" + item); if (item.StartsWith("Image:")) { File f = new FileImages(); f.Pars(item); files.Add(f); } if (item.StartsWith("Text:")) { File f = new FileTxt(); f.Pars(item); files.Add(f); } if (item.StartsWith("Movie:")) { File f = new FileMovies(); f.Pars(item); files.Add(f); } } Console.WriteLine("___________"); foreach (var file in files) { Console.WriteLine(file); } }
public async Task <IActionResult> UploadFiles() { if (!IsMultipartContentType(Request.ContentType)) { return(new UnsupportedMediaTypeResult()); } Log.Information($"POSTing files..."); var boundary = HeaderUtilities.RemoveQuotes(MediaTypeHeaderValue.Parse(Request.ContentType).Boundary); var reader = new MultipartReader(boundary.Value, Request.Body); MultipartSection section; IList <Image> imagesRequest = null; var result = new List <FileImages>(); while ((section = await reader.ReadNextSectionAsync()) != null) { var contentDisposition = section.GetContentDispositionHeader(); if (contentDisposition.IsFormDisposition() && imagesRequest is null) { var formSection = section.AsFormDataSection(); string formValue = await formSection.GetValueAsync(); imagesRequest = JsonConvert.DeserializeObject <IList <Image> >(formValue, new JsonSerializerSettings { Error = delegate(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args) { args.ErrorContext.Handled = true; } }); } if (contentDisposition.IsFileDisposition()) { var fileSection = section.AsFileSection(); if (string.IsNullOrEmpty(fileSection.FileName)) { Log.Information($"Empty file section"); continue; } Log.Information($"Saving file {fileSection.FileName}"); var blobId = await _blobStorage.AddFileAsync(Path.GetFileName(fileSection.FileName), fileSection.FileStream, fileSection.Section.ContentType, _bucket); if (imagesRequest is null || !imagesRequest.Any()) { imagesRequest = new Image[] { new Image { Width = int.Parse(_configuration["DefaultImage:Width"]), Format = _configuration["DefaultImage:Format"], Height = int.Parse(_configuration["DefaultImage:Height"]) } }; } foreach (var requestedImage in imagesRequest) { requestedImage.Id = NewId.Next().ToGuid(); if (requestedImage.Width <= 0) { requestedImage.Width = int.Parse(_configuration["DefaultImage:Width"]); } if (requestedImage.Height <= 0) { requestedImage.Height = int.Parse(_configuration["DefaultImage:Height"]); } } var fileImages = new FileImages { Id = blobId, Images = imagesRequest, Bucket = _bucket }; //await _imagesMetaCollection.InsertOneAsync(fileImages); foreach (var requestedImage in imagesRequest) { await _bus.Publish <GenerateImage>(new { Id = requestedImage.Id, Bucket = _bucket, BlobId = blobId, Image = requestedImage, UserId = new Guid(_bucket) }); } result.Add(fileImages); } } return(Ok(result)); }