c#中富文本编辑器Simditor带图片上传的全部过程(项目不是mvc架构)

c#中富文本编辑器Simditor带图片上传的全部过程(项目不是mvc架构)

 

描述:最近c#项目中使用富文本编辑器Simditor,记录一下以便以后查看。

注:此项目不是MVC架构的。

 

1.引用文件

项目中引用相应的css和js文件,注意顺序不能打乱,否则富文本编辑器不会正常显示。

    <link rel="stylesheet" type="text/css" href="../styles/simditor.css" />
   
<script type="text/javascript" src="../scripts/simditor/module.js">script> <script type="text/javascript" src="../scripts/simditor/hotkeys.js">script> <script type="text/javascript" src="../scripts/simditor/uploader.js">script> <script type="text/javascript" src="../scripts/simditor/simditor.js">script>

 

 

2.HTML中富文本的定义 

<div >
    <h5>故障描述:h5>
    <div class="view">
        <textarea id="Describe">textarea>
    div>
div>    

 

3.初始化富文本

注意的参数:

textarea: $('#Describe'), //对应的html中富文本的ID。
url: '../handlersNew/MGuideData.ashx', //对应的服务器的地址。(文件上传的接口地址)
params: { type: "UploadPic" }, //以键值对的方式,传递给后台的参数,若无填写null即可
fileKey: 'fileDataFileName',  //服务器获取文件数据的参数名
<script type="text/javascript">
var editor1;
  $(document).ready(function () {  
  editor1 = new Simditor({
     textarea: $('#Describe'),
      placeholder: '这里输入图文内容...',
     pasteImage: true,
     toolbar: ['title', 'fontScale', 'alignment', 'bold', 'italic', 'underline', 'strikethrough', 'color', '|',
          
'ol', 'ul', 'blockquote', 'code', 'table', '|', 'link', 'image', 'hr', '|', 'indent', 'outdent'], upload: {   url: '../handlersNew/MGuideData.ashx', //文件上传的接口地址   params: { type: "UploadPic" }, //键值对,指定文件上传接口的额外参数,上传的时候随文件一起提交   fileKey: 'fileDataFileName', //服务器端获取文件数据的参数名   connectionCount: 3,   leaveConfirm: '正在上传文件'   }   }); }); script>

 

4.页面效果

页面中有“上传图片”和“外链图片”两个按钮供选择。

c#中富文本编辑器Simditor带图片上传的全部过程(项目不是mvc架构)_第1张图片

 

5.C#后台保存图片代码

后台图片的保存代码,HttpContext.Current.Request.Files["fileDataFileName"]就是上面"3"中的fileKey

public void ProcessRequest(HttpContext context)
{
  //获取页面数据
   string type = context.Request["type"];
   if (type.Equals("UploadPic")) //富文本上传图片 
   {
     #region 富文本上传图片

     HttpPostedFile file =  HttpContext.Current.Request.Files["fileDataFileName"]; 
      if (file != null)
      { 
        //生成文件夹路径
        string path = userName + "_" + DateTime.Now.Year
                         + DateTime.Now.Month.ToString("D2")
                         + DateTime.Now.Day.ToString("D2");
        string strPath = System.Web.HttpContext.Current.Server.MapPath(string.Format("/Resource/Upload/{0}/", path));

         //生成新的文件名+时间后缀
         string fileName = Path.GetFileNameWithoutExtension(file.FileName);
         string FileEextension = Path.GetExtension(file.FileName);
         fileName = fileName + "-"
               + DateTime.Now.Year + "-"
                   + DateTime.Now.Month + "-"
                   + DateTime.Now.Day + "-"
                   + DateTime.Now.Hour + "-"
                   + DateTime.Now.Minute
                   + FileEextension;
      //判断文件夹是否存在,若不存在则创建
          if (!Directory.Exists(strPath)) 
            Directory.CreateDirectory(strPath);
      //将2个字符串组合成一个路径
string filePath = Path.Combine(strPath, fileName);
      //保存操作 file.SaveAs(filePath); szJson
= "{\"isSuccess\":1,\"msg\":\"上传成功。\"}"; } else   szJson = "{\"isSuccess\":0,\"msg\":\"上传失败。\"}"; #endregion   } }

 

6.Html前端页面的"保存"代码

 前端页面获取富文本的数据用getValue,注意用post方式,因富文本含有大量数据,get方式会报错:提示url地址过长。

因含有富文本所以必须进行编码escape,再传递到后台,否则会提示:从客户端(*****)中检测到有潜在危险的......(因为不是MVC框架,暂时无法用别的方式解决)

$.ajax({
   type:"post",
    url: '../handlersNew/MGuideData.ashx',
    data: {
      // ...    
       "describe": escape(editor1.getValue()), //编码
      },
    dataType: 'json',
    success: function (data) {
      if (data.isSuccess == 0) {  //错误消息
        // ...
      }
      else { //成功操作
        // ...
      }
  }
});                                    

 

7.c#后端"保存"按钮

最后就是整个页面参数的后台保存操作。因情况不一,所以就不贴代码了。

context.Request["describe"]   //后台便可以获取该前端传递到后台的参数

 

8.页面展示富文本保存的数据

前端页面显示时,用setValue即可。因保存时编码了,所以页面显示数据必须进行解码unescape才能正常显示。
//解码显示 
editor1.setValue(unescape(describe)); //故障描述

 

 

以上是使用富文本编辑器Simditor在C#中带图片上传的全部过程(不是MVC架构的项目)。

仅供参考,如有问题,望指出。

posted on 2018-01-25 17:51 永不言弃! 阅读( ...) 评论( ...) 编辑 收藏

你可能感兴趣的:(c#中富文本编辑器Simditor带图片上传的全部过程(项目不是mvc架构))