今天,我们来讲一下富文本编辑器上传图片功能的操作。首先,在这里需要引入一个js插件 (config.js),在插件里面写下配置图片上传的路径。

ios支持富文本 富文本功能_visual studio

接下来,既然要实现上传图片的功能,那我们就需要一个东西是用来接收表单里面的值(如下图)。在这里我是用HttpPostedFileBase

ios支持富文本 富文本功能_后端_02

文件的处理方式:一般我们会把文件保存到文件夹里面,这里我在做发布的时候创建了几个文件夹。

比如:我在Notice 文件夹里面创建四个文件夹,Notice是最终保存的文件夹。

第一个文件夹保存的是上传的附件;第二个是传入富文本编辑器的图片;第三个保存的是用于上传轮播图的图片;第四个保存的是富文本编辑器发布的内容,保存在一个input文本标签里面。

ios支持富文本 富文本功能_ios支持富文本_03

我们需要把文件放在临时文件夹。

其实,整个过程很简单,你先判断是否为空,若为空就返回上传的文件为空,不为空就进行下一步操作,获取文件后缀,在判断数据类型,检查目录是否存在,若不存在那就创建,拼接文件名、文件保存路径,保存,返回就可以了!

在这里,先创建一个名叫Ckeditor4UploadResult类,这个类里面有两个类。一个用来当你点击上传到服务器时候的数据,里面包含了上传成功的信息与上传文件的名称还有一个上传文件的URL编码,下面那个是接收另一个类的错误信息,显示出来的内容。另一个为了记录返回的错误信息。

//表示是上传成功 1成功 0失败
        public int uploaded { get; set; }

        //上传文件的名称
        public string fileName { get; set; }

        //上传文件的URL(URL编码)
        public string url { get; set; }

        //错误
        public Ckeditor4UploadResultErro error = new Ckeditor4UploadResultErro();
    }

    public class Ckeditor4UploadResultErro 
    {
        //错误信息
        public string message { get; set; }
    }

接下来,判断如果不为空就要判断是否为图片,所以我们就要获取它的文件后缀。获取到文件后缀后,小写是因为后面的数据类型名称都是小写形式,然后我们就需要判断数据类型。我们需要判断fileExtension是否是这些数据类型中的某一个,否则返回文件类型错误。

我们还要检查目录是否存在,不存在就创建。

然后拼接文件名,当前时间加上唯一标识符。

接下来拼接保存文件的路径,如果担心写错可以打开目录看一下路径。然后呢,我们要拼接它的保存路径,把它保存在filePath里面,然后设置返回值,upload的返回值为1,fileName等于上面文件名,还有URL路径,路径的信息需要返回到上面(如下图)。

ios支持富文本 富文本功能_c#_04

下面就是这整个富文本编辑器上传图片的完整代码。

public ActionResult UpEditorFile(HttpPostedFileBase upload)
        {
            Ckeditor4UploadResult ck = new Ckeditor4UploadResult();

            try
            {
                if (upload != null)
                {
                    //获取文件后缀
                    string fileExtension = System.IO.Path.GetExtension(upload.FileName);
                    fileExtension = fileExtension.ToLower();//小写

                    //判断数据类型
                    if ("(.gif)|(.jpg)|(.bmp)|(.jpeg)|(.png)".Contains(fileExtension)) 
                    {
                        //检查目录是否存在,不存在就创建
                        if (!Directory.Exists(Server.MapPath("~/Document/Temp/")))
                        {
                            Directory.CreateDirectory(Server.MapPath("~/Document/Temp/"));
                        }

                        //拼接文件名
                        string fileName = DateTime.Now.ToString("yyyy-MM-dd") + "-" + Guid.NewGuid() + fileExtension;

                        //拼接保存文件的路径
                        string filePath = Server.MapPath("~/Document/Temp/")+fileName;

                        //保存文件
                        upload.SaveAs(filePath);

                        //返回值
                        ck.uploaded = 1;
                        ck.fileName = fileName;
                        ck.url = "/Document/Temp/" + fileName;

                    }
                    else
                    {
                        ck.error.message = "文件类型有问题";
                    }


                }
                else 
                {
                    ck.error.message = "上传文件为空!";
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                ck.error.message = "上传失败!";
            }

            return Json(ck,JsonRequestBehavior.AllowGet);
        }

好了,到这里就结束了,希望对大家有所帮助!