Answer:
Index.razor
<EjsRichTextEditor Id="defalt_RTE" @ref="RTE" @bind-Value="@rteValue"> // Used for getting Rich Text Editor value <ChildContent> <RichTextEditorImageSettings SaveUrl="api/SampleData/Save">RichTextEditorImageSettings> // Used for convert base 64 string on server side ChildContent> EjsRichTextEditor> SampleDataController.cs using System.Text.RegularExpressions; [HttpPost("[action]")] public IActionResult Save(IList { …………. // Stored base64 string to global list if (ImageInfo.Count == 0) { ImageInfo.Add(new RTEImage { imgName = UploadFiles[0].FileName, base64Img = base64String }); } else if(!ImageInfo.Exists(x => x.imgName == UploadFiles[0].FileName)) { ImageInfo.Add(new RTEImage { imgName = UploadFiles[0].FileName, base64Img = base64String }); } return Content(""); } [HttpPost("[Action]")] public void Add([FromBody] RTEValue value) // Triggered when you click the button { htmlText = value.value; // Get the RTE value
string pattern = @" Regex rx = new Regex(pattern); foreach (Match m in rx.Matches(htmlText)) { var imageName = m.Groups["alt"].Value; var blobUrl = m.Groups["url"].Value; var data = ImageInfo.Find(x => x.imgName.Contains(imageName)); // Find the corresponding base64 string htmlText = htmlText.Replace(blobUrl, data.base64Img); //Replace blobURL to base64 string. Now, You can store this htmlText value to your database. It contains both images and content. } } |