利用正则表达式匹配出编辑器内容中<img>标签,上传后再将生成的新图片路径替换Html中的原来的<img>标签
1 /// <summary> 2 /// 取得HTML中所有图片的 URL。 3 /// </summary> 4 /// <param name="sHtmlText">HTML代码</param> 5 /// <returns>图片的URL列表</returns> 6 public static string GetHtmlImageUrlList(string sHtmlText) 7 { 8 // 定义正则表达式用来匹配 img 标签 9 Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""‘]?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""‘<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase); 10 // 搜索匹配的字符串 11 MatchCollection matches = regImg.Matches(sHtmlText); 12 int i = 0; 13 string[] sUrlList = new string[matches.Count]; 14 // 取得匹配项列表 15 foreach (Match match in matches) 16 { 17 if (!(match.Groups["imgUrl"].Value.Substring(0, 8) == "/upload/")) 18 { 19 WebClient wc = new WebClient(); 20 string fileName = match.Groups["imgUrl"].Value.Substring(match.Groups["imgUrl"].Value.LastIndexOf("/") + 1); //取得原文件名 21 string upLoadPath = "/upload/" + DateTime.Now.ToString("yyyyMM") + "/" + DateTime.Now.ToString("dd") + "/"; //上传目录相对路径 22 string fullUpLoadPath = Utils.GetMapPath(upLoadPath); //上传目录的物理路径 23 if (!Directory.Exists(fullUpLoadPath)) 24 { 25 Directory.CreateDirectory(fullUpLoadPath); 26 } 27 string newFilePath = upLoadPath + fileName; //上传后的路径 28 wc.DownloadFile(match.Groups["imgUrl"].Value, HttpContext.Current.Server.MapPath(newFilePath)); 29 sHtmlText = sHtmlText.Replace(match.Groups["imgUrl"].Value, upLoadPath + fileName); 30 } 31 } 32 return sHtmlText; 33 }
时间: 2024-12-25 04:09:06