如何从富文本编辑器保存图像

Man*_*noz 0 asp.net richtextbox asp.net-mvc-4

我有一个包含富文本编辑器的表单。

虽然富文本编辑器中只有内容,但将其保存在数据库中时没有任何问题。但是当我在其中附加图像时,它总是用这个错误来戳我-

Invalid URI: The Uri string is too long.
Run Code Online (Sandbox Code Playgroud)

是的,URI 确实太长了,但是即使我已经给出了要nvarchar(MAX)保存的数据类型,为什么这个表单不保存它呢?

参见图片——

在此输入图像描述

以及该图像的 URI -

在此输入图像描述

虽然模型类型具有nvarchar(MAX)此富文本编辑器的数据类型。

我正在执行简单的保存功能并通过以下方式呈现富文本编辑器的值

@Html.Raw()帮手。

对于该编辑器的渲染,我在客户端执行此操作 -

 @Html.Raw(Model.businessDetails)
Run Code Online (Sandbox Code Playgroud)

模型-

public string businessDetails{get;set;}

为什么 SQL SERVER 不保存这么长的 uri?我提交的表单出了什么问题?

Avi*_*rix 5

首先第一件事,

您应该将其作为 POST 请求而不是 GET 来执行!

之后你有两个选择

1)

设置一个属性,以便它允许在字符串中使用 HTML,并将图像作为 base64 存储在 html 中,您不必担心将其存储在任何地方。

[AllowHtml]
public string businessDetails{ get; set; }
Run Code Online (Sandbox Code Playgroud)

2)

  1. 获取图片的src

  2. data:image/png;base64,从中删除

  3. 用base64转换器解码结果,得到的结果是二进制结果

  4. byte[] imageArr ;
    
    //set your imageArr here---
    
    BitmapImage bi = new BitmapImage();
    bi.BeginInit();
    bi.CreateOptions = BitmapCreateOptions.None;
    bi.CacheOption = BitmapCacheOption.Default;
    bi.StreamSource = new MemoryStream(imageArr);
    bi.EndInit();
    
    Image img = new Image();  //Image control of wpf
    
    img.Source = bi;
    
    Run Code Online (Sandbox Code Playgroud)
  5. 将图像保存到目的地。img.Save("path",图像格式.Jpeg)

  6. 用实际的 URL 替换该图像的 src