一切福田,不離方寸,從心而覓,感無不通。

js数学函数

Math.ceil求最小的整数但不小于本身. Math.round求本身的四舍五入。 Math.floor求最大的整数但不大于本身. js全屏代码:window.open("full_window.htm","","fullscreen,scrollbars") Math.E 自然对数的底(为常数) 2.718 Math.LN10 10的自然对数 2.302 Math.LN2 2的自然对数 0.693 Math.PI 圆周率 3.1415 Math.SQRT1_2 1/2的平方根 0.707 Math.SQRT2 2的平方根 1.414 Math.sqrt(x) X的平方根 更X的值有关 Math.pow(x, n) 返回x的n次方的数值 参数为x和n Math.log(n) 返回n的自然对数 参数为n Math.exp(n) 返回e的n次方的数值 参数为n 三角函数 Math.cos(x) X的余弦函数 Math.sin(x) X的正弦函数 Math.tan(x) X的正切函数 Math.acos(y) X的反余弦函数 Math.asin(y) X的反正弦函数 Math.atan(y) X的反正切函数 这里注意:参数x和以及反函数的返回数值的单位都为弧度(比如 PI弧度=180度) 舍入函数和随机数字 Math.random() 产生从0到1的随机数 Math.round(x) 取最接近整数x的数值 Math.floor(x) 取最接近整数x并且比x小的数值 Math.ceil(x) 取最接近整数x并且比x大的数值 Math.min(a, b, c) 返回参数列表中最小的数值 Math.max(a, b, c) 返回参数列表中最大的数值

龙生   26 Dec 2013
View Details

亚马逊公有云落地中国 阿里、腾讯等迅速降价

亚马逊公有云落地中国 阿里、腾讯等迅速降价 本报记者纪佳鹏北京报道 12月18日,亚马逊公有云服务AWS(AmazonWebServices)宣布即将推出中国云计算平台。中国是AWS在亚太地区的第4个区域,全球的第10个区域。这意味着长期传闻入华的亚马逊AWS正式在国内落地。 而就在AWS落地中国的同一天,IBM也宣布与世纪互联合作将其云计算基础架构服务SCE+((SmartCloudEnterprise+)正式引入中国。 12月18日,微软也正式宣布联想成为中国首家微软CloudOS战略合作伙伴,联想将使用基于微软WindowsServer及Hyper-V、SystemCenter和WindowsAzurePack的微软云平台对外提供服务,成为中国首家微软CloudOS战略合作伙伴。 国内本地云计算服务提供商也坐不住了。 阿里云当天推出了“阿里云1218”活动,阿里云全线产品降价,最高降幅50%。金山推出了挖矿云主机,限量免费送,12月18日11点开抢。 12月19日,腾讯云的年终大促即将盛大开启。据消息人士透露,腾讯云此次会在云服务器、IDC带宽等服务上给予开发者前所未有的惊喜折扣,这意味着开发者可以用更低的成本去使用腾讯云。 一时间,云服务市场好不热闹。 亚马逊AWS落地中国 亚马逊方面表示,为了更好地落地中国,并遵守中国的相关法律和监管要求,亚马逊AWS中国采用了“多伙伴策略”来提供云计算服务。 一方面,北京市政府、宁夏自治区政府和亚马逊AWS、宽带资本旗下的云基地签署合作谅解备忘录,通过位于北京和宁夏的云计算基础设施为中国各地客户提供云服务;另一方面,亚马逊AWS也已经和光环新网和网宿科技合作,将为亚马逊提供必要的互联网数据中心服务和互联网接入服务,包括基础架构、带宽和网络功能。 亚马逊方面负责AWS在中国的业务发展的全球副总裁容永康表示,通过与北京和宁夏两地政府合作,亚马逊成为第一个参与到“前店后厂”的云服务厂商。容永康称,AWS是最早实践云计算服务的厂商,会将优质的技术资源带入中国,并会在中国市场长期扎根发展。 据了解,亚马逊AWS入华的消息此前一直都有传闻,但是每次都没有真正得到落实。最近一次是在今年年初,据了解当时亚马逊在中国招聘的AWS员工,而且开始游说一些企业购买亚马逊AWS服务,不过这些服务只能通过亚马逊位于海外的数据中心提供。 据介绍,包括小米、奇虎360、金山软件等数千家中国企业的海外分公司已经开始使用AWS服务。“客户在开拓在国际市场的同时,亚马逊也在不断加强对中国市场的客户需求的理解。”容永康说。 国外成熟的公有云服务提供商一直垂涎于中国市场,但是由于资质、监管等问题一直无法真正落地中国。直到去年11月1日,微软宣布与国内互联网基础设施服务提供商世纪互联达成合作,实现微软企业级云服务——Office365和WindowsAzure在中国的落地,这是国外云服务上落地中国的首个案例。据悉,其合作方式是,微软向世纪互联授权技术,由后者运营这两项服务。 紧接着,SAP和IBM也同样借道进入中国,提供公有云服务。虽然此次亚马逊方面没有透露更多的落地细节,孙永杰表示,基于国内对外资企业进入中国进行公有云服务,政策方面监管严格,亚马逊方面或许也是像其他国外等云服务提供商入华一样的路径。 国内云计算将激战 事实上,自从2006年推出云计算服务以来,由于竞争策略出色,亚马逊在此项业务中规模扩张迅速,并在行业中遥遥领先,硅谷创业公司中约90%使用亚马逊的云计算服务。 据市场研究公司Synergy估计,亚马逊第四季度云计算的营收将超过7亿美元,这意味着亚马逊将比其他所有主要云计算服务提供商,包括微软、IBM、谷歌等的营收总和还高15%。 “作为一个在行业内重量级的云计算服务提供商,AWS入华将让国内其他企业也加速发展,这有利于市场更加良性发展。”AWS在中国的合作伙伴——网宿科技(300017.SZ)副总裁刘洪涛接受21世纪经济报道记者独家专访时表示,网宿科技与亚马逊合作的谈判前后持续了三四年。网宿科技主要为AWS等云计算平台的客户提供CDN服务和IDC服务,保证云平台良好的用户体验。 在AWS宣布落地中国的同时,IBM、微软、阿里巴巴等竞争对手也在同一天推出了不同的促销策略以及宣布与其他企业的战略合作,有分析认为,各大厂商都在阻击亚马逊入华。 IT产业分析师孙永杰表示,目前国内企业真正将大多数预算放到云计算上面还比较少,市场的接受度目前还比较低,这对于对所有企业而言大家的机会基本上是均等的。 业内人士告诉21世纪经济报道记者,AWS所提供的是大而全的公有云服务,其服务产品丰富;而国内的云服务提供商包括腾讯、百度、阿里等公司都基于自己的公司特点搭建生态圈,腾讯是依赖庞大的高黏度客户,帮助合作伙伴进行推广,纵深发展客户;而百度终端客户流量大,云盘做得出色,阿里云则是基于自己建立的电商体系下的平台,通过技术的积累而发展。 “AWS落地中国也需要与其他企业同台竞技,包括价格竞争、市场教育和宣传营销的落实等。”孙永杰说,亚马逊的云服务有价格优势,性价比强,但是作为一家互联网企业,对于有些企业对更加复杂的云服务的需求,不是像IBM这种精于服务企业级的IT公司那样在行。 “AWS产品大而全,但是无法覆盖中国这么大的市场,大家都是同一起跑线上竞争,挖掘这个市场。”上述业内人士对21世纪经济报道记者说。(编辑卢爱芳) 转自:http://www.chinaz.com/news/2013/1219/331826.shtml

龙生   20 Dec 2013
View Details

JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用

今天再次设置java的环境变量,突然发现每次设置都只是按照步骤一步步将其设置完,并不了解为啥要设置,于是上网找了找,找到遍文章,觉得不错,就留下了。 仅供记录学习。转自:http://bbs.tech.163.com/bbs/tech_0ik1/147645925.html 在把jdk安装到计算机中之后,我们来进行设置使java环境能够使用。 首先右键点我的电脑。打开属性。然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量需要设置三个属性“JAVA_HOME”、 “path”、“classpath”,其中在没安装过jdk的环境下。path属性是本来存在的。而JAVA_HOME和classpath是不存在 的。 一:点“新建”,然后在变量名写上JAVA_HOME,顾名其意该变量的含义就是java的安装路径,呵呵,然后在变量值写入刚才 安装的路径“C:\jdk1.6”。(注:如果安装的路径不是磁盘C或者不是在jdk1.6这个文件夹,可对应修改。以下文字都是假定安装在C: \jdk1.6里面。) 二:其次在系统变量里面找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别java命令,则 变量值为“.;%JAVA_HOME%\bin”,(其中“%JAVA_HOME%”的意思为刚才设置JAVA_HOME的值),也可以直接写上“C: \jdk1.6\bin” 三: 最后再点“新建”,然后在变量名上写classpath,该变量的含义是为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。其值为“.;%JAVA_HOME%\lib \dt.jar;%JAVA_HOME%\lib\toos.jar (要加.表示当前路径)”,与相同“%JAVA_HOME%有相同意思” 以 上三个变量设置完毕,则按“确定”直至属性窗口消失,下来是验证看看安装是否成功。先打开“开始”-> “运行”,打入“cmd”,进入dos系统界面。然后打“java -version”,如果安装成功。系统会显示java version jdk"1.6.0"。 确保安装在C盘文件名为jdk1.6,环境变量直接复制就可以了,在dos界面中输入javac来查看该命令是否合法,同样输入java来查看该命令是否合法 这样环境变量就设置好了,下面进行对PATH,CLASSPTH,JAVA_HOME的讲解 以下为设置JAVA_HOME,CLASSPATH,PATH的目的: 1.设置JAVA_HOME: 一、为了方便引用,比如,你JDK安装在C:\Program Files\Java\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串; 二、归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的—-系统崩溃! 三、第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件, 以后用JAVA久了就会知道, 要是某个软件不能正常使用, 不妨想想是不是这个问题. 2.设置CLASSPATH: 这 是一个很有趣,当然也比较折磨初学者的问题, 这个变量设置的目的是为了程序能找到相应的".class"文件, 不妨举个例子: 你编译一个JAVA程序—A.java, 会得到一个A.class的类文件,你在当前目录下执行java A, 将会得到相应的结果(前提是你已经设置CLASSPATH为"."). 现在, 你把A.class移到别的目录下(例如:"e:\"), 执行java A, 将会有NoClassDefFindError的异常,原因就是找不到.class文件, 现在你把CLASSPATH增加为:".;e:\"再运行java A, 看看会有什么结果~~:)~~~, 一切正常, java命令通过CLASSPATH找到了.class文件! 3.设置PATH: 道理很简单, 你想在任何时候都使用%JAVA_HOME%\bin\java 等来执行java命令吗, 当然不会, 于是, 你可以选择把 %JAVA_HOME%\bin添加到PATH路径下, 这样, 我们在任何路径下就可以仅用java来执行命令了.(当你在命令提示符窗口输入你个代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程 序, 并且执行. 转自:http://www.cnblogs.com/kevinlocn/archive/2009/10/12/1581855.html

龙生   17 Dec 2013
View Details

在Access中执行SQL语句

Access在小型系统开发中等到了广泛使用。虽然Access提供了可视化的操作方法,但许多开发人员还是喜欢直接用SQL语句操作数据表。如何在Access中打开SQL视图,对于初次使用Access的程序员可得费点时间呢。 1、ACESS2007 (1)点击“创建”--点击 “查询设计” (2)点击关闭 (3)点击左上角的"SQL视图"就可以打开SQL窗口了 2、ACCESS 2003 (1)点击对象里的“查询” (2)点击 “在设计视图创建查询” ,再点击“关闭” (3)再点击   左上角的"sql" (4)就可以输入sql语句了 3、Access里like语句通配符 Access里like的通配符用法是这样:“?”表示任何单一字符;“*”表示零个或多个字符;“#”表示任何一个数字。如: select * from tablename where fieldname like '*沙洲*' 拣尽寒枝不肯栖,寂寞沙洲。 转自:http://www.cnblogs.com/zhouhb/archive/2011/07/22/2114344.html

龙生   16 Dec 2013
View Details

WinForm UI 多线程 (线程间操作无效)

一个简单的Form, 按钮btnTest是enabled=false。在btnEnable的Click事件中 创建线程,在线程中尝试设置btnTest.Enabled = true; 发生异常:线程间操作无效: 从不是创建控件“btnTest”的线程访问它。 代码如下:

在默认情况下,C#不准许在一个线程中直接访问或操作另一线程中创建的控件,这是因为访问windows窗体控件本质上是不安全的。 线程之间是可以同时运行的,那么如果有两个或多个线程同时操作某一控件的某状态,尝试将一个控件变为自己需要的状态时, 线程的死锁就可能发生。 为了区别是否是创建该控件的线程访问该控件,Windows窗体控件中的每个控件都有一个InvokeRequired属性,这个属性就是用来检查本控件是否被其他线程调用的属性,当被创建该线程外的线程调用的时候InvokeRequired就为true。有了这个属性我们就可以利用它来做判断了。 光判断出是否被其他线程调用是没有用的,所以windows窗体控件中还有一个Invoke方法可以帮我们完成其他线程对控件的调用。结合代理的使用就可以很好的完成我们的目标。 上面问题的解决方法: 方法一: public Form1() { InitializeComponent();     CheckForIllegalCrossThreadCalls = false; } // // Summary: // Gets or sets a value indicating whether to catch calls on the wrong thread // that access a control’s System.Windows.Forms.Control.Handle property when // an application is being debugged. // // Returns: // true if calls on the wrong thread are caught; otherwise, false. [EditorBrowsable(EditorBrowsableState.Advanced)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [SRDescription("ControlCheckForIllegalCrossThreadCalls")] [Browsable(false)] public static bool CheckForIllegalCrossThreadCalls { get; set; } 方法二:

方法三: 通过ISynchronizeInvoke和MethodInvoker.

[…]

龙生   15 Dec 2013
View Details

C#多线程退出程序C#程序的几种退出

C#程序的几种退出 1.Application.Exit(); //好像只在主线程可以起作用,而且当有线程,或是阻塞方法的情况下,很容易失灵 2.System.Environment.Exit(0); //无论在主线程和其它线程,只要执行了这句,都可以把程序结束干净 3.this.Close(); 4.Application.ExitThread(); msdn 对前台线程和后台线程的解释:托管线程或者是后台线程,或者是前台线程。后台线程不会使托管执行环境处于活动状态,除此之外,后台线程与前台线程是一样的。一旦所有前台线程在托管进程(其中 .exe 文件是托管程序集)中被停止,系统将停止所有后台线程并关闭。通过设置 Thread.IsBackground 属性,可以将一个线程指定为后台线程或前台线程。例如,通过将 Thread.IsBackground 设置为 true,就可以将线程指定为后台线程。同样,通过将 IsBackground 设置为 false,就可以将线程指定为前台线程。从非托管代码进入托管执行环境的所有线程都被标记为后台线程。通过创建并启动新的 Thread 对象而生成的所有线程都是前台线程。如果要创建希望用来侦听某些活动(如套接字连接)的前台线程,则应将 Thread.IsBackground 设置为 true,以便进程可以终止。 所以解决办法就是在主线程初始化的时候,设置: Thread.CurrentThread.IsBackground = true; 这样,主线程就是后台线程,在关闭主程序的时候就会关闭主线程,从而关闭所有线程。 但是这样的话,就会强制关闭所有正在执行的线程,所以在关闭的时候要对线程工作的结果保存。

龙生   15 Dec 2013
View Details

C#四舍五入函数

C# 中没有四舍五入函数,程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是 Banker 舍入法Bankers rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的Math.Round 方法默认的也是 Banker 舍入法在 .NET 2.0 中 Math.Round 方法有几个重载方法Math.Round(Decimal, MidpointRounding)Math.Round(Double, MidpointRounding)Math.Round(Decimal, Int32, MidpointRounding)Math.Round(Double, Int32, MidpointRounding)将小数值舍入到指定精度。MidpointRounding 参数,指定当一个值正好处于另两个数中间时如何舍入那个值该参数是个 MidpointRounding 枚举此枚举有两个成员,MSDN 中的说明是:AwayFromZero 当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较小的值。ToEven 当一个数字是其他两个数字的中间值时,会将其舍入为最接近的偶数。注 意!这里关于 MidpointRounding.AwayFromZero 的说明是过错的!实际舍入为两个值中绝对值较大的值。不过 MSDN 中的 例子是正确的,英文描述原文是 it is rounded toward the nearest number that is away from zero.所以,要实现四舍五入函数,对于正数,可以加一个 MidpointRounding.AwayFromZero 参数指定当一个数字是其他两个数字的中间值时其舍入为两个值中绝对值较大的值,例:Math.Round(3.45, 2, MidpointRounding.AwayFromZero)不过对于负数上面的方法就又不对了因此需要自己写个函数来处理第一个函数:double Round(double value, int decimals){if (value < 0){return Math.Round(value + 5 / Math.Pow(10, decimals + 1), decimals, MidpointRounding.AwayFromZero);}else{return Math.Round(value, decimals, MidpointRounding.AwayFromZero);}} 第二个函数:double Round(double d, int i){if(d >=0){d += 5 * Math.Pow(10, -(i + 1));}else{d += -5 * Math.Pow(10, […]

龙生   12 Dec 2013
View Details

按照功能排列的MIME_type类型

类型/子类型 扩展名 application/envoy evy application/fractals fif application/futuresplash spl application/hta hta application/internet-property-stream acx application/mac-binhex40 hqx application/msword doc application/msword dot application/octet-stream * application/octet-stream bin application/octet-stream class application/octet-stream dms application/octet-stream exe application/octet-stream lha application/octet-stream lzh application/oda oda application/olescript axs application/pdf pdf application/pics-rules prf application/pkcs10 p10 application/pkix-crl crl application/postscript ai application/postscript eps application/postscript ps application/rtf rtf application/set-payment-initiation setpay application/set-registration-initiation setreg application/vnd.ms-excel xla application/vnd.ms-excel xlc application/vnd.ms-excel xlm application/vnd.ms-excel xls application/vnd.ms-excel xlt application/vnd.ms-excel xlw application/vnd.ms-outlook msg application/vnd.ms-pkicertstore sst application/vnd.ms-pkiseccat cat application/vnd.ms-pkistl stl application/vnd.ms-powerpoint pot application/vnd.ms-powerpoint pps application/vnd.ms-powerpoint ppt application/vnd.ms-project mpp application/vnd.ms-works wcm application/vnd.ms-works wdb […]

龙生   11 Dec 2013
View Details

用于构建交互式图表的最佳 jQuery 图表库

对于JQuery图表来说,其重要的功能是以一个简洁和交互的方式展示繁杂的原始数据。这并不仅仅以各种颜色来渲染展示数据,而应该是更能够吸引读者和方便用户理解。 稍后介绍的某些javascript图表库,已经越来越流行了,因为它们有着相当吸引人的组件,囊括了我们已知的包括线状图,柱状图和饼图等7种图表类型。另外,这些js图表库提供一些有用的组件作为它们的可选项,比如说放大,缩小,这些工具能提供关于数据的更多信息,同时也提供一些选项对其进行定制。 tnjin 翻译于 2天前 0人顶 顶 翻译的不错哦! 用户通常遇到某些使用了兼容现代浏览器的HTML5的canvas特性的jQuery图表,并不能很好的与IE兼容。整体上,这些库集成了六种图表类型,比如散点图,饼图,柱状图,带点的折线图以及区域图。这些图表能够通过简单的配置就能展示多种图例,这将帮助人们清楚的分辨各图表项。 在这篇文章中,我们分享给读者的是15个图表库——各种从简单到复杂的高级图表,它们都能胜任。希望你们喜欢! tnjin 翻译于 2天前 1人顶 顶 翻译的不错哦! 1. Chart.js : 使用HTML5 canvas的图表库 Chart.js是一个令人印象深刻的基于HTML5的canvas特性构建的javascript图表库。目前支持六种图表类型(折线图,柱状图,雷达图,饼图,柱状区域图和极坐标区域图),而且这些通过一个独立的,不足5Kb的包来提供的。颜色,字体,加粗以及图表大小都是可以定制的。同时,图表也可以选择在加载的时候添加动画效果。 Source tnjin 翻译于 2天前 0人顶 顶 翻译的不错哦! 2. xCharts : 基于数据驱动的图表 xCharts是一个用于给网站创建具有漂亮的视觉效果和自定义数据驱动的图表的javascript库,它依赖于D3.js。基于HTML,CSS和SVG技术,xChart被设计成能够被动态,流式和开放的集成和定制。 由于xChart使用SVG技术,我们能够直接通过CSS生成大部分的我们定义的xChart图表。这意味着如果你愿意,你只需要做很少的控制就可以处理这些可视化的图表。定义图表风格的最好的方式是从包含的样式表开始,或者使用你的浏览器的元素监视器来查看每一个元素可用的CSS选择器。  Source tnjin 翻译于 2天前 0人顶 顶 翻译的不错哦! 3. Sigma.js : 使用HTML5的canvas对象作图 Sigma.js 是一个使用HTML5 Canvas元素作图的免费开源的javascript图表库。它被特别设计成适合分享页面上交互的网络地图和浏览动态的网络数据库。这个js库以MIT协议分发。 Source 4. HighCharts Highcharts 是一个纯粹使用HTML5/Javascript写的图表库,能向你的网站或者网络应用提供直观交互的图表。目前,Highcharts支持折线图,曲线图,面积图,面积拟合图,条状图,柱状图,饼图,散点图,仪表图,面积范围图,面积曲线图,条状范围图,气泡图,箱型图,误差线,漏斗图,瀑布流和极坐标图表类型。 Source tnjin 翻译于 2天前 0人顶 顶 翻译的不错哦! 5.Fusion Charts jQuery 的FusionCharts插件帮助你增加交互式的JavaScript图表,在你的网站,移动端和企业级应用中绘图。它将FusionCharts套件XT的灵动和全面的特点与jQuery简易的语法融合在了一起 Source 6. Flot :  jQuery中引人注目的JavaScript绘图插件 Flot 为jQuery准备的一个纯JavaScript绘图库, 重点在于使用简单,引人注目的界面和良好的交互特性。图的一些关键特性是通过开关,放大缩小和与数据点交互来控制的,此外还有它加入了简单工具提醒的功能 Source Mitisky 翻译于 2天前 0人顶 顶 翻译的不错哦! 7. JS Charts : 免费的JavaScript图表 JS Charts是一个基于JavaScript的图生成器,它只需要很少或不需要编码。使用JS Charts来绘制图表是一个简单且容易的工作,因为你只需要使用客户端脚本(即通过Web浏览器操作)。不需要额外的插件或服务器模块。只引用这个脚本,准备好图表数据的XML、JSON或JavaScript数组,OK,你的图表已经就绪了! 源码 8. jQuery Sparklines 这个jQuery插件直接在浏览器中生成波形图(小的内联图表),使用的数据可以是内嵌在HTML中或通过JavaScript提供。这个插件与大多数现代浏览器兼容,已经使用Firefox 2+、Safari […]

龙生   10 Dec 2013
View Details

ASP.NET实现下载的中文文件名乱码处理

<% if request("infoid")<>"" then set rs=conn.execute("select * from nproduct where id="&request("infoid")) if not (rs.eof and rs.bof) then proname=rs("proname") content=rs("proinfo") end if rs.close set rs=nothing end if %>   早几天在系统中添加文件管理的下载功能, 要求在ASPX文件中实现, 以进行权限的控件,于是添加下列代码: … Response.ContentType = mime; //相应的MIME TYPE Response.AppendHeader("Content-Disposition", "attachment; filename=\"" +fileName + "\""); Response.BinaryWrite(bytes); Response.End(); … 当fileName中包含中文时, 文件下载保存时, 文件名变成了乱码, 需要用户修改,这也就违被了我设定预设文件名的初衷. 解决办法1: 对fileName进行URL编码, 把下划线标注的那句改为Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + Server.UrlEncode(fileName) + "\"");便可. 虽然中文乱码问题解决了, 但是还有一个问题: 在测试时, 下载保存的文件名有时会变成该页面的名字(.aspx), 虽然可以把内容下载到本地, 但是需要更改文件名及类型, 这样会给用户带来很大的困惑. 还有一个办法, 可以很简单的解决以上的两个问题: 解决办法2: 假设当前的URL为 http://localhost/download.aspx?id=123, fileName为"下载.pdf", 我们只要把下载URL改为 http://localhost/download.aspx/下载.pdf?id=123 可, 上面下划线标注的那句代码则可以注释掉了, 试一下, 结果一定让你非常满意! 转自:http://www.webshu.net/jiaocheng/programme/ASPNET/200606/1427.html

龙生   07 Dec 2013
View Details