将远程图片抓到本地

当用户拷贝其它网站上的文章时,可能存在一些图片。在保存后,图片仍是链接该网站上,而会导致以后该连接失效的可能。所以增加在发新贴时,将远程图片抓到本地,改为本地链接。

 

其实涉及一些概念:
forums_Posts中Body和FormattdBody有什么区别?


Body:是存储用户上贴的真实内容
FormattedBody:顾名思义,是经过HTML语法格式化后的Body内容,可以直接输出到页面上.

但由于FTB可以使用HTML语法,这样导致了很多Body内容和FormattedBody内容是相同的.

主要目的是:以空间换时间(宝玉语)


Body是在编辑帖子的时候
FormattedBody是在显示帖子的时候


步骤:

1)、创建图片抓取类RemoteImageGather.cs
2)、在Posts.cs中的public static Post AddPost(Post post, User postAuthor)修改

post.Body = Formatter.FormatIrcCommands(post.Body, postAuthor.Nickname);

            //抓取贴子中的远程图片 add by zs.tan 2008-10-20
            post.Body = RemoteImageGather.RemoteImagesSave( Formatter.FormatIrcCommands(post.Body, postAuthor.Nickname));


RemoteImageGather.cs的关键点是找出图片的URL
        /// <summary>
        /// 取HTML代码中的图片路径
        /// </summary>
        /// <param name="htmlCode"></param>
        /// <returns></returns>
        public static ArrayList GetImageLinks(string htmlCode)
        {
            ArrayList al = new ArrayList();

            //匹配全路径
            Match match = Regex.Match(htmlCode, @"http(s)?://+(((/?)+[\w-.]+(/))*)+[\w-./]+\.+(jpg|jpeg|png|bmp|gif)", RegexOptions.IgnoreCase);

            while (match.Success)
            {
                //过滤相同的图片
                if (!al.Contains(match.Value)) al.Add(match.Value);
                match = match.NextMatch();
            }

            return al;

        }

posted on 2008-10-22 15:38 Zero.Tan 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/nobugs/archive/2008/10/22/1316805.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值