超大文件上传
介绍:可上传超过2G文件,测试4G无问题
一、项目环境:vs2012,mvc4.0 ,.net framework4.5(4.0也可)
二、需要资源
1、初次建立silverlight项目需要安装Silverlight_Developer.exe、silverlight_sdk.exe,最后项目打包里面有一份(也可网上下载)
2、下载 http://silverlightfileupld.codeplex.com/releases/view/21485 此项目,最后项目打包里面有一份(也可网上下载)
三、过程
1、建立mvc4项目MvcApplication1
2、解决方案右键,新建项目,点击左侧silverlight,选择silverlight应用程序,项目名称为FileUpload,与下载的项目名称相同,用以覆盖
3、保存,关闭MvcApplication1解决方案,不然文件占用,不能覆盖
4、解压网上下载项目SilverlightFileUploadSrc.zip,复制文件夹FileUpload、SilverlightFileUpload到MvcApplication1解决方案下,与项目MvcApplication1同级
5、打开网上下载项目文件夹SilverlightFileUploadWeb,复制文件FileUpload.ashx、FileUpload.ashx.cs,文件夹Upload(用以保存上传文件),到项目MvcApplication1根目 录下
6、打开项目MvcApplication1,把Upload文件夹,文件FileUpload.ashx、FileUpload.ashx.cs都包含在项目中
7、解决方案右键 ,添加现有项目,把项目SilverlightFileUpload添加进来,并且项目MvcApplication1要添加引用,引用项目SilverlightFileUpload
8、在项目MvcApplication1/Views/Shared,新建项,建立mvc4视图用户控件ViewUserControl1.ascx
9、复制网上下载项目SilverlightFileUploadWeb下FileUploadTestPage.aspx页面所有(注意第一行不复制),到ViewUserControl1.ascx页面里面
10、Home/Index页面,添加 div @Html.Partial("ViewUserControl1")
11、至此 已可以上传图片文件
四、修改
1、修改FileUpload.ashx文件可以更改上传路径,并且上传完成后可以传递文件信息
2、修改ViewUserControl1.ascx文件,可以控制上传文件类型
3、修改项目FileUpload,可以更改上传控件显示颜色,更改提示文字为汉字,项目FileUpload下code下FileUpload.cs下,enum FileUploadStatus最好不要修改,修改后也可 以上传,但上传不显示进度,完成后图标也不会转变了(暂未找到问题及解决)
五、注意事项
1、mvc项目中的区域问题Areas,如果此上传项目用在区域里面,那就在区域里面的shared文件夹里面添加视图用户控件,同时修改ViewUserControl1.ascx里 面InitParameters="UploadPage=FileUpload.ashx,为InitParameters="UploadPage=/FileUpload.ashx,注意加了个斜杠,要不会找不到此处理文件,导致上传无反应
2、项目初次运行,浏览器会提示安装silverlight.exe(可点击自动下载),安装好后重启浏览器就可以上传,最后项目打包里面有一份
3、网站部署时候,有一个问题,如果是在默认网站下建立虚拟目录来运行的,需要修改InitParameters="UploadPage=/FileUpload.ashx为InitParameters="UploadPage=/虚拟目录名称/FileUpload.ashx ,绝对路径
六、项目打包
http://pan.baidu.com/s/1nt8ukbB
1、silverlight
http://silverlightfileupld.codeplex.com/releases/view/21485
本地已测 4G 明天继续摸索 此项目html页面有问题,不能整合到mvc页面中,但用iframe 引用aspx页面 也能上传,
http://silverlightuploader.codeplex.com/releases/view/26792 此项目也能上传4G多文件,再整合看
2、pulpload
3、查找网盘大文件上传原理