超大文件上传

时间:2021-12-30 20:12:43

介绍:可上传超过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、查找网盘大文件上传原理