分类
日记 相册

豋山大峪“仙鱼沟”,巧遇野猪“献身”驴友记。

    星期天与驴友游走大峪“仙鱼沟”,进山到农家乐处,看一帮驴友们正在此地吃午饭。我们一行几人本应去南边山沟进山,突发奇想:南边沟岔上山梁己去过多次;不如咱们走趟新沟走北边山沟?提议得到同行驴友赞同!改道北边山沟,行进不到二百米由于新线路生、茅草小道、鬼史神差、走到山涯底下,忽然发现:一野猪横在涯下茅草旁,原来我们走岔道了。此处没有路。持杖上前察看:野猪刚死未久,嘴角流血未凝固!……尸体未僵,大约七、八十斤左右。综合周边地型分析;此野猪可能是与同类争食、打架、嬉戏、或被什么野兽追赶摔落涯下摔死命亡,……看到此情,我们一行几人也为‘猪儿’同情,为它超度一番,……为了使它给人类最后一次献身,完成史命,我与驴友老何协同分工合作准备了一场“庖丁解牛”大战。……我俩人都是退伍老兵,共同軍旅生涯;侦察兵科目训练:野外生存体验经历,这些年爬山我的必备装备:“瑞士军刀”发挥很大的作用,受“庖丁解牛”故事启发,从小就目染过农村屠夫杀猪场景。山沟里找来葛条,三下五除二把野猪挂在树杈上,扒皮、开堂,大解八块,……一场老驴“解野猪”表演结束。……战斗结果:同行驴友每人有份,几斤野猪肉背回家。打牙祭啦!……下山坐923次车返回。请看秋景:

分类
学习笔记

Response.WriteFile 无法下载大文件解决方法

以前用Response.WriteFile(filename),但当遇到大文件时无法完整下载。

该方法最大的问题,它不是直接将数据抛到客户端,而是在服务器端(IIS)上缓存。当下载文件比较大时,服务器压力会很大,iis虽然支持2G大小的文件下载,但当文件上了很多M时,由于服务器以及网络等因素的影响,异常概率相当大。所以当需要下载大文件时就不能使用上面的方法了。

微软推荐以下方法代替之:

  • 将数据分成较小的部分,然后将其移动到输出流以供下载,从而获取这些数据。
  • 为用户提供用于下载文件的链接。
  • 使用 Microsoft ASP 3.0 进行下载或者与 ASP 一起使用 Software Artisans FileUp。
  • 创建 ISAPI 扩展以下载文件。
  • 使用 FTP 下载文件。

参考文档:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;812406

C#相关代码如下:

public class FileDown
    {
        public FileDown()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }
        /// <summary>
        /// 参数为虚拟路径
        /// </summary>
        /// <param name="FileName"></param>
        /// <returns></returns>
        public static string FileNameExtension(string FileName)
        {
            return Path.GetExtension(MapPathFile(FileName));
        }
        /// <summary>
        /// 获取物理地址
        /// </summary>
        /// <param name="FileName"></param>
        /// <returns></returns>
        public static string MapPathFile(string FileName)
        {
            return HttpContext.Current.Server.MapPath(FileName);
        }
        /// <summary>
        ///使用WriteFile下载文件,参数为文件虚拟路径
        /// </summary>
        /// <param name="FileName"></param>
        public static void DownLoadold(string FileName)
        {
            string destFileName = MapPathFile(FileName);
            // Labelmsg.Text = destFileName;
            if (File.Exists(destFileName))
            {
                FileInfo fi = new FileInfo(destFileName);
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.ClearHeaders();
                HttpContext.Current.Response.Buffer = false;
                //HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.Default));
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(Path.GetFileName(destFileName), System.Text.Encoding.UTF8));
                HttpContext.Current.Response.AppendHeader("Content-Length", fi.Length.ToString());
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                HttpContext.Current.Response.WriteFile(destFileName);
                HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.End();
            }
        }
        /// <summary>
        /// 使用OutputStream.Write分块下载文件,参数为文件虚拟路径
        /// </summary>
        /// <param name="FileName"></param>
        public static void DownLoad(string FileName)
        {
            string filePath = MapPathFile(FileName);
            //指定块大小
            long chunkSize = 204800;
            //建立一个200K的缓冲区
            byte[] buffer = new byte[chunkSize];
            //已读的字节数
            long dataToRead = 0;
            FileStream stream = null;
            try
            {
                //打开文件
                stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
                dataToRead = stream.Length;
                //添加Http头
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachement;filename=" + HttpUtility.UrlEncode(Path.GetFileName(filePath)));
                HttpContext.Current.Response.AddHeader("Content-Length", dataToRead.ToString());
                while (dataToRead > 0)
                {
                    if (HttpContext.Current.Response.IsClientConnected)
                    {
                        int length = stream.Read(buffer, 0, Convert.ToInt32(chunkSize));
                        HttpContext.Current.Response.OutputStream.Write(buffer, 0, length);
                        HttpContext.Current.Response.Flush();
                        HttpContext.Current.Response.Clear();
                        dataToRead -= length;
                    }
                    else
                    {
                        //防止client失去连接
                        dataToRead = -1;
                    }
                }
            }
            catch (Exception ex)
            {
                HttpContext.Current.Response.Write("Error:" + ex.Message);
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                }
                HttpContext.Current.Response.Close();
            }
        }

        /// <summary>
        /// 使用OutputStream.Write分块下载文件,参数为文件绝对路径
        /// </summary>
        /// <param name="FileName"></param>
        public static void DownLoadFile(string filePath)
        {
            //string filePath = MapPathFile(FileName);
            //指定块大小
            long chunkSize = 204800;
            //建立一个200K的缓冲区
            byte[] buffer = new byte[chunkSize];
            //已读的字节数
            long dataToRead = 0;
            FileStream stream = null;
            try
            {
                //打开文件
                stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
                dataToRead = stream.Length;
                //添加Http头
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachement;filename=" + HttpUtility.UrlEncode(Path.GetFileName(filePath)));
                HttpContext.Current.Response.AddHeader("Content-Length", dataToRead.ToString());
                while (dataToRead > 0)
                {
                    if (HttpContext.Current.Response.IsClientConnected)
                    {
                        int length = stream.Read(buffer, 0, Convert.ToInt32(chunkSize));
                        HttpContext.Current.Response.OutputStream.Write(buffer, 0, length);
                        HttpContext.Current.Response.Flush();
                        //HttpContext.Current.Response.Clear();
                        buffer = new Byte[chunkSize];
                        dataToRead = dataToRead - length;
                    }
                    else
                    {
                        //防止client失去连接
                        dataToRead = -1;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
                //HttpContext.Current.Response.Write("Error:" + ex.Message);
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                }
                HttpContext.Current.Response.Close();
            }
        }
    }
分类
日记

阿里微微链接交易平台推荐

今天给大家推荐一家中文链接交易平台:阿里微微。如果你有网站或博客,每月通过阿里微微赚取零花钱是没有问题的,域名、空间费用能够轻松解决。

本博经过尝试,已经赚够今年域名钱啦!挂链几月下来,提现50余人民币。

Q12E1E{WK3@6($0X3BHH5@L

google pr是一个重要的衡量指标。本站目前pr2,百度指数2。

另外,百度、谷歌的收录情况、快照、域名年龄、外链数等等,也是比较重要的参考。

参考价格:
PR0(1-5元);
PR1(3-8元);
PR2(5-10元);
PR3(8-15元);
PR4(12-20元);
PR5(25-50元);
PR6(50-150元);
PR7(150-300元);
PR8(300-500元);
PR9(500-1000元)。

推荐奖励

阿里微微外链交易平台还提供3重推荐奖励,有无网站都可以参与:

1.推荐注册会员,奖励0.2元/个;
2.推荐的会员成功消费,奖励消费金额的4%;
3.推荐的会员成功收入,奖励收入金额的2%。

关于支付

满10元就可以通过支付宝申请支付了,阿里微微平台收取20%的服务费。

感兴趣的朋友,可以由这里前往阿里微微注册……

分类
日记 相册

同女友“回娘家”

       国庆长假,终于有时间随女友回她家了。缘分天注定,我和女友晓婷的缘分说来有着太多的巧合,咸阳三原县是她的故乡,同时也恰巧是我和双胞胎弟弟的出生地,在这片孕育着文明的土地上,承载着我们大家的牵挂。半年多的忙碌,一直没有时间去她家看看她的父母,终于盼来了国庆假期,和小弟过完生日,2号立即随女友出发,奔向我魂牵梦绕的出生地。

       记得小时候每次回三原,交通很不方便,最早乘坐火车,在襁褓中伴随一夜火车的颠簸才能到达,略微大些,90年代后,通了省级公路,乘上去三原的大巴,在拥挤的大巴上颠的直到晕车乱吐,半天后才能到达。今非昔比,地铁高速,约不到2小时的行程,我们就来到了三原县城,过渭水,过泾河,一切皆是那么顺畅。三原城和记忆中没有太多变化,看到了我出生时的医院,看到了我儿时记忆中的大桥、公园。真没想到晓婷家原来就在大桥的对面不远处的小镇。年少时,已记不清有多少个暑假曾坐在清河边的土堆上,在清晨,在夕阳中曾凝望过对面的那片土地。真没想到,远方竟然有着她成长的家乡和学校。缘分就是这么擦身而过,缘分又就是这么真真切切,冥冥中一切都是命中注定吧。

        三轮摩托车载着我们归家,一路看着路边的风景,心情说不出的激动,菜园一片接着一片,这片美丽的田野上,养育着这里辛勤的人民。清晨三三两两的农民朋友,在地里做着农活,正是他们辛勤的劳动付出,才有着城市里新鲜的蔬菜,才有着繁华都市里灿烂的文明。

         10多分钟,三轮车已经来到了晓婷的故乡,三原鲁桥镇。这是一个坐落在渭北平原上的普通小镇,清晨的街道上,空气里夹杂着泥土的芬芳,顿时令人心情开阔。村里路面开阔,没几步,就来到了晓婷家。晓婷妈早已为我们张罗了一桌纯绿色的丰盛早饭,有新采摘的西兰花芽,地里刚出的菜花,鲜嫩的莲花白,一大盘红烧肉,油糕,油饼……我这个从来没吃过如此天然绿色蔬菜的“城里娃”,敞开狂吃,直到吃的胃里实在撑不下了,方才停下。美味来自民间,最香的饭,最能吃的饭是家里的饭,一点不假。吃完早饭,晓婷建议带我出去走走,以防我积食。我们步行出村,去了她的初中母校,学校顺塬而建,我俩手牵手,踩着她曾经走过无数次的台阶,一层层攀登而上。这所学校曾经历过2008汶川大地震,因在地震中楼房受损严重,如今整个学校已经废弃,荒草长满了校园,公示栏上还留有2008年5月12日汶川大地震全校人员疏散的紧急通知,接着我们来到学校教师的砖窑房、实验楼、操场……。傍晚时分晓婷拉着我来到学校后面的土塬上摘酸枣,极目远望,整个鲁桥镇尽收眼底,近处是一幢幢楼房,远处是一片片菜地,甚是美丽。

        晚饭后,我又同晓婷来到菜地里,地里一片欣欣向荣。各种时令蔬菜在地里生长着,我见到了菜花,西兰花,莲花白,紫甘蓝,香菜,芹菜,辣椒,油麦菜,萝卜,大白菜,西葫芦,茼蒿……万物生长靠自然,感谢大自然赐予他们阳光和雨露,感谢地里辛勤劳作的农民朋友。

       第二日,清晨我坐在晓婷家门口晒着太阳,一大早晓婷妈又忙碌地为全家人张罗早饭,晓婷爸同样忙碌地在喂猪羊,勤劳淳朴的晓婷拿着笤帚将屋里屋外、庭院、门口清扫了一遍,这不就是“黎明即起,洒扫庭除”。看着一家人忙碌的身影,听着树上喜鹊叽叽喳喳的歌唱。勤劳的一家人又开始了一天的忙碌,生活和种菜是如此的相似,一茬菜,每一天,唯有勤劳,才能获得丰收啊。我们在家里待了2天,农村的生活准时、规律。村民们都忙忙碌碌,虽是国庆假期,然而菜地无假期,家里的猪羊不放假,农民朋友们依然劳作在这片土地上,辛勤的耕耘着,哺育着我们。我还有幸吃到了晓婷的双胞胎姐姐远从青岛邮寄回来的月饼,“每逢佳节倍思亲”,晚上品尝着青岛月饼,和晓婷仰望苍穹,希望姐姐独在异乡照顾好自己。相逢总是如此短暂,当太阳升起,我俩将回城,国庆假期也即将结束,回城后我们又将继续奋斗自己的生活。家是我们永远不离不弃的港湾,三原是我的故乡,也是她的故乡,我还会回来的。“家和万事兴”是晓婷家新房门头上的大字。今年只有我俩回家,她的姐姐、弟弟均在外工作。“家和万事兴”我想这是长辈对我们孩子们的期望吧。“妻贤夫兴旺,母慈儿孝敬”,无论在天涯海角,无论我们走的多远,我们都会常回家看看的,因为这里有我们共同的家,有我们共同的牵挂。

分类
日记 相册

护国兴教寺游记

今天是共和国63岁生日,同时也是我和弟弟29岁的生日。清晨吃完弟弟为我们精心准备的煎鸡蛋后,我和晓婷两人前往了长安著名的护国兴教寺游览。兴教寺是我国著名寺院,里面有唐朝著名僧人玄奘法师的灵骨塔。

巍巍南山下,悠悠少陵畔。 兴教寺就在这里。

IMG_0012