C# 写的通用得到富文本框中的图片路径

富文本框(即 ueditor)是个好东西,功能很强大!开发者若需要去了解学习的话,可以访问:http://ueditor.baidu.com/website/ 进行学习。

但是有得后端开发者需要取出其中某一类的标签,比如需要取出里面的所有图片等....

好,废话不多说,直接上代码:

例子:

     /// <summary>
        /// 通用得到富文本框中的图片
        /// </summary>
        /// <returns></returns>
        private List<string> GetContentImg(string content)
        {
            //存储图片的集合
            List<string> imgList = new List<string>();
            //定义匹配变量
            int j = 0;
            //定义截取开始下标
            int startIndex = 0;
            //定义截取长度变量
            int len = 0;
            //从content中取出图片
            for (int i = 0; i < content.Length; i++)
            {
                char ch = content[i];
                if (len > 0)
                {
                    len++;
                }
                //判断是否满足条件
                if ((j==0 && ch == 'i') || (j == 1 && ch == 'm') || (j == 2 && ch == 'g') || (j == 3 && ch == ' ') || (j == 5 && ch == 'r') ||(j == 6 && ch == 'c') ||(j == 7 && ch == '"')||(j == 4 && ch=='s')||(j == 8 && ch == '"'))
                {
                    if (j==4)
                    {
                        startIndex = i;
                        len++;
                    }
                    if (j == 8)
                    {
                        //开始截取
                        string str = content.Substring(startIndex, len);
                        imgList.Add(str);
                        //清空
                        startIndex = 0;
                        j = 0;
                        len = 0;
                    }
                    j++;
                    continue;
                }
            }
            var list = new List<string>();
            if (imgList.Count>0)
            {
                //得到服务器地址
                var cmsDomain = _configuration.GetSection("System:CMSDomainName").Value;
                foreach (var item in imgList)
                {
                    string url = item;
                    //拆分
                    var newUrl = url.Split('\"');
                    if (newUrl.Length>1)
                    {
                        url = newUrl[1].Replace("@/", "/");
                    }
                    //拼接
                    url = cmsDomain + url;
                    //验证图片是否可以在网络上访问
                    bool flag = FileClassify.JudgeFileExist(url);
                    if (flag)
                    {
                        list.Add(url);
                    }
                }
            }
            return list;
        }

其中:fileClassify是一个静态的类

public static bool JudgeFileExist(string url)
        {
            try
            {
                //创建根据网络地址的请求对象
                var httpWebRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
                httpWebRequest.Method = "HEAD";
                httpWebRequest.Timeout = 1000;
                //返回响应状态是否是成功比较的布尔值
                var data= (HttpWebResponse)httpWebRequest.GetResponse();
                return data.StatusCode == HttpStatusCode.OK;
            }
            catch
            {
                return false;
            }
        }

呵呵,才写好的。可能封装性不是很好,也有可能会有漏洞,大家可以用 try catch 来捕获异常,因为我也是初级程序员,后期还会继续优化的!

posted on 2018-06-12 11:07  尘世辣么美  阅读(1443)  评论(0编辑  收藏  举报

导航