Asp.net 删除新闻同时删除图片设计思想
最近遇到一个问题,在做新闻发布功能的时候会出现图文混排的现象,但当删除新闻的时候并没有同时删除该新闻中的图片,因为大多数的HTML编辑器都仅仅支持上传图片,好的能够支持浏览服务器图片,但效果都不佳,那么有什么方法能够取出新闻中的图片,然后可以根据这些图片做“文章”呢?
通过资料搜集,自己总结出一套思想,仅供参考,如下:
首先设计新闻表(我只挑重点字段),id、title、Details、PublishTime、PublishMan、NewsImg(这个字段就是记录该条新闻中的图片的,字段长度要长一些,因为记录的是图片的完整url,当然你可以仅仅保存图片的名字,但这种情况在某种情况下会出现图片不能显示的后果)
好数据库设计好了,然后就是怎么去图片了,我这里用正则表达式来取。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | //返回新闻中的所有图片,用|隔开 public string MyGetImgUrl( string text) { StringBuilder str = new StringBuilder(); string pat = @"<img\s+[^>]*\s*src\s*=\s*([']?)(?<url>\S+)'?[^>]*>" ; Regex r = new Regex(pat, RegexOptions.Compiled); Match m = r.Match(text.ToLower()); while (m.Success) { Group g = m.Groups[2]; str.Append(g).Append( "|" ); //g就是图片的完整url m = m.NextMatch(); } return str.ToString().Replace( "\"" , "" ).TrimEnd( '|' ); } //插入新闻 protected void Button1_Click( object sender, EventArgs e) { CJ_DBOperater.CJ.sqlconn_str = "server=localhost;database=PicLinkToNews;uid=sa;pwd=ovenjackchain" ; string str = "insert into news values('{0}','{1}','{2}','{3}','{4}')" ; //TxtContent.Text就是获得HTML编辑器的内容,他是HTML格式的 CJ_DBOperater.CJ.SQL_ExecuteNonQuery( string .Format(str, TxtTitle.Text, TxtContent.Text, DateTime.Now.ToString(), "admin" , MyGetImgUrl( this .TxtContent.Text))); //插入成功 } |
到这里就OK了,我们已经插入了一条新闻,并且把这条新闻里的图片URL取出放到NewsImgs字段里面了。
那接下来的事情就好办了吧。
例如,我想做一个flash图片滚动效果,图片就是新闻图片,点击图片可以跳转到该条新闻,那么这个的重点就是如何取出图片。
很简单了,因为我们已经把图片放到NewsImgs字段里面了,只需要sql语句就完全可以了。
1 2 3 4 5 6 7 8 | DataTable dt = CJ_DBOperater.CJ.SQL_ReturnDataTable( "select top 4 NewsImgs from news where NewsImgs!=''" ); for ( int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i][0].ToString().Contains( '|' )) Response.Write(dt.Rows[i][0].ToString().Substring(0, dt.Rows[i][0].ToString().IndexOf( '|' )) + "<br />" ); else Response.Write(dt.Rows[i][0].ToString()+ "<br />" ); } |
//这里是每条新闻只取第一个图片(如果新闻中有图片的话)
OK了。
图片都取出来了,那么删除新闻同时删除图片就OK了。
当然若您仅仅做删除新闻同时删除图片这个功能是不需要NewsImgs字段也完全可以的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架