Asp.Net 上传大文件专题 解决方案终极篇(原项目是“我不是圣人”写的)
2009-07-24 16:23 废墟中的垃圾 阅读(424) 评论(0) 收藏 举报我不是圣人 的文章 被不断的转载 cnblogs 搜索一下就看到了。但是有一个问题就是没有一个是完整项目下载的。
又或者说都是完整下载,都是 我不是圣人 提供的
但是 作者提供的代码是有问题的 不能直接运行 ,部分人可以运行了 进度条没有效果。
原文的地址是
http://www.cnblogs.com/stg609/archive/2008/07/26/1252231.html
http://www.cnblogs.com/stg609/archive/2008/07/28/1255118.html
http://www.cnblogs.com/stg609/archive/2008/08/03/1258898.html
http://www.cnblogs.com/stg609/archive/2008/08/03/1259206.html
http://www.cnblogs.com/stg609/archive/2008/08/04/1259469.html 需要下载源程序的在这个连接里面有。然后可以按照我说的解决方案去解决问题。
这里基于 我不是圣人的上传代码我写一下 解决方案
1. 程序IDE vs2005 这个需要说明,希望使用2005或者以上的版本进行开发。
2. 很多人下载了代码说不能运行,实际上是因为你没有安装Asp.net Ajax
http://dl.pconline.com.cn/html_2/1/79/id=42065&pn=0&linkPage=1.html 可以在这里进行下载
当然如果不想安装可以找到 “我不是圣人”没有大包到bin下面的 System.Web.Extensions.dll 和 System.Web.Extensions.Design.dll 这样就可以运行了。
3. 很多人说程序可以运行了,进度条也出来了,但是没有滚动效果。
其实很简单,本身程序是没有错误的,但是忽略了一个问题就是 IE 的 ajax 缓存问题。这里有两个方法解决。
第一个方法也是最简单的,就是在 UploadPrograss.aspx.cs 的 Load 方法第一句加入 Response.CacheControl = "no-cache";就可以了
第二个方法是在UploadPrograss.aspx.cs 的js 里面修改一下
原代码是 :script.Append("<script>refresh('UploadProgress.aspx?UploadID=" + ufi.strFileGuid + "&event=start','1000','lStatus','lSpeed','lProgressPic','lProgressNum');</script>");
只要修改一下路径参数
script.Append("<script>refresh('UploadProgress.aspx?UploadID=" + ufi.strFileGuid + "&event=start&random=' + 一个随机数,'1000','lStatus','lSpeed','lProgressPic','lProgressNum');</script>");
第二个方法是实际上是每次给ie一次冗余的参数 这样ie 就不进行页面缓存了,做过ajax项目的兄弟应该对这个比较属性。但是这里比较推荐第一个方法。
4. 程序只能支持IE不能支持其他浏览器,这个问题我这里因为时间的问题不能给出一个完整的解决方案,这里我给大家一个思路,希望有能力的朋友完成
其实这里不能在 其他浏览器显示主要是因为 “我不是圣人” 没有使用标准或者说兼容性的 js 导致的
大家要修改的主要是在 ModalDialog.js 里面
把所有的通过document.all.elementName 这样调用对象的用标准化的方式来调用,如果本身用了jqeury框架,可以使用 $() 来调用就可以支持 其他浏览器了。
好了,就写到这里了,应该可以解决你所有的问题了。希望对正在使用这个功能和效果的朋友有一定的帮助。也希望 “我不是圣人” 不要声气 呵呵。
浙公网安备 33010602011771号