宝哥软件园

jQuery.uploadify文件上传组件示例说明

编辑:宝哥软件园 来源:互联网 时间:2021-09-07

1.jquery.uploadify简介

在ASP.NET上传的控件有很多,比如FileUpload、SWFUpload、Uploadify等等,尤其是后两个控件的用户体验更好,没有刷新,上传进度等等。在短信平台最近的发展中,使用Uploadify来上传文件。

Uploadify官网地址是:http://www.uploadify.com/可以满足项目开发的需求。

下载地址:http://www.uploadify.com/wp-content/uploads/files/uploadify.zip版本信息如下:

解压缩后,目录结构如下(未详细说明):

2.使用过程

下载的程序是一个PHP示例。由于项目使用了ASP.NET MVC,所以使用uploadify可以分为以下几个步骤:

(1)加入uploadify js类库(将uploadify js类库引用到项目的相关位置,比如放在scripts目录下)

(2)第二次封装uploadify以满足项目调用

(3)编译文件上传处理方法

(4)页面引用相关类库,编写上传脚本

2.1第二次打包上传

为uploadify调用封装js类库,以满足项目使用:

//转换为key=valuekey=值格式tx。topram=function(dto){ return jquery。参数(dto);}//设置上传文件tx.uploadify=函数(divid,options,action){ if(options==undefined action==undefined){ $(' # ' divid)。uploadify('上传');返回;} if(options==undefined){ ABP . message . warn('请输入参数配置');返回;} var file exts=options . file exts;if(file exts==undefined | | file exts . length=0){ ABP . message . warn('要选择的文件扩展名不能为空');返回;} $(“#”Divid)。upload ify({ uploader : '/file/upload?r=' math . random()' file exts=' encodeURIComponent(file exts)' '(选项!==未定义?tx . toparam(options . params): ' '),//服务器处理地址swf 3360 '/scripts/uploadify/uploadify . swf ',//用于上传的flash宽度3360 60,//按钮宽度height: 23,//按钮高度buttonText: '选择文件',//按钮文本buttonCursor: '手',//按钮鼠标图标fileObjName: ' Filedata ',///上传参数名称filetypext//文件描述fileDesc: '不超过200M ',sizelimit 3360 20480000,//允许的文件大小(kb)。这是2mauto3360 false。//选择后,自动开始上传multi: true,//是否支持同时上传多个文件queueSizeLimit: 1、//上传多个文件时,同时上传的文件数为on select once :函数(事件、数据){//上传单个文件或多个文件时,选择文件时触发//事件对象//数据选择的操作信息//文件选择操作中选择的文件数}、onuploadstart3360函数(文件){//要上传的文件3360文件对象ShowBusy},onuploadcomplete:函数(文件){//file3360上传或返回不正确的文件对象。},onuploadsuccess 3360函数(文件、数据、响应){//file3360成功上传文件对象//data:服务器端脚本返回的数据(文件响应的任何内容)//response:服务器返回的响应是否真的成功或者错误,如果没有响应。如果返回false,则successtimeout选项过期后的反应实际上是假设的。如果(行动!==未定义){ action(JSON . parse(data));} ClearBusy();},onuploaderror:函数(file,errorcode,errormsg,errorstring) {//file3360上传的文件对象//errorCode:返回错误代码//errorMsg:返回错误消息////error string 3360包含错误的所有详细信息的可读错误信息if (action!==未定义){if (action!==undefined){ action({ result : error code,message: errorMsg,filename: ' ',file ext : ' ' });} } ClearBusy();}});}2.2文件上传处理

使用MVC功能,您只能在登录后上传文件:

使用系统;使用系统IO;使用系统。安全。负责人;使用系统网络.使用系统网络。手动音量调节使用系统。网络安全;命名空间TxSms .网络。控制器{///摘要///文件上传管理////摘要[授权]公共类文件控制器: txsmscontrollerbase { private static string jsonResult=' { 0 } ' result ' : { 1 }, ' message ' : ' { 2 } ', ' filename ' : ' { 3 } ', ' file ext ' : ' { 4 } ' { 5 }//摘要///文件上传页面////summary///returns/returns[Authorize]公共动作结果Index(){ return View();}///摘要///上传文件////summary////param name=' file data '/param///returns/returns[Authorize]公共操作结果Upload(https tedfiledbase文件数据){//如果没有上传文件if (filedata==null || filedata .文件名。IsNullOrEmpty()| |文件数据.内容长度==0){ 0返回新的JsonStringResult(字符串。格式(jsonResult,' { ',-1 '','','',' ',',',' } ');}字符串参数路径=请求查询字符串[' path '];字符串参数文件=请求查询字符串[' getzip文件'];if (parmGetzipfile .IsNullOrEmpty()){ ParmGetZipfile=' 0 ';}//保存到~/上传文件夹中,名称不变字符串时间=日期时间现在。ToString(' yyymmdhmmssfff ');字符串文件文本=路径GetExtension(filedata .FileName);字符串文件名=time file ext string VirtualPath=ParmPath .IsNullOrEmpty()?$ ' ~/uploads/' : $ ' ~/uploads/{ ParmPath }/';字符串实际路径=服务器。映射路径(VirtualPath);if(!目录。存在(实际路径)){目录。创建目录(服务器. Mappath(VirtualPath));}//文件系统不能使用虚拟路径var destFile=virtualPath文件名;字符串路径=服务器. MapPath(destFile);文件数据另存为(路径);bool iszip=fileext!=null (fileext .等于('。zip ',StringComparison .ordinaligorcase)ParmGetZipfile .等于(' 1 ');if(iszip){ var virtualPathZip=virtualPath time/';字符串实际路径Zip=服务器. MapPath(VirtualPathZIP);if(!目录。存在(实际路径压缩)){目录创建目录(实际路径zip);} destFile=fileext=//第一步骤,解压TxSmsZipHelper .解压缩文件(路径,实际路径压缩);//第二步骤,获取超过文件,如果没有获取到,则抛出异常//获得目录信息var dir=new DirectoryInfo(实际路径zip);//获得目录文件列表var文件=目录.GetFiles();foreach(文件中的文件信息文件名){//var ext=Path .GetExtension(文件名.姓名)。toLower();//if (ext==' .xls' || ext==' .xlsx’)//{//destFile=路径。组合(文件名.目录名,文件名。名称);//break;//}destFile=virtualPathZip文件名。名称;文件文本=路径. GetExtension(文件名.名称);打破;} }返回新的JsonStringResult(字符串。格式(jsonResult,' { ',0 '上传成功、destFile、fileext .ToLower(),“}”;}公共类JsonStringResult :内容结果{ public JsonStringResult(字符串JSON){内容=JSON内容类型=' application/JSON ';}}}}文件上传路径:/文件/上传

2.3 页面调用

!DOCTYPE html html towneta name=' viewport ' Content=' width=device-width '/title index/title link href='/Content/themes/base/uploadify/uploadify。CSS ' rel='样式表/script src=' http :/Scripts/jquery-2。1 .4 .量滴js '/script script src=' http :/Scripts/uploadify/jquery。上传。量滴js/script脚本类型=' text/javasvar auth=//初始化tx.uploadify('uploadify ',{ //参数配置fileexts: ' * .jpg*。巴布亚新几内亚;*.zip ',//要选择文件的扩展名,多个用;分割//form data : { aspsesid : aspsesid,AUTHID: auth },params 3360 {//参数路径: '文件',//上传路径,允许为空getzipfile: 1 /解压活力文件,并获取文件0:不解压获取,1:解压获取}},函数(数据){ //回调函数//data.result:0表示成功,其他表示错误//data.message:信息//data.filename:文件名称//data.fileext:文件扩展控制台。日志(数据。结果);控制台。日志(数据。消息);控制台。日志(数据。文件名);控制台。日志(数据。文件扩展名);});$('#btnUpload ').单击(函数(){ tx。upload ify(' upload ify ');//开始上传});});/script/head dydiv style=' margin : 40px;div id=' uploadify '/div按钮id=' btnUpload '开始上传/button/div/body/html允许程序,界面如下:

选择文件—开始上传:

好吧,到此已经完成。

3、http 302解决方案

很怀疑二八原则,很快就出现了。同事用火狐浏览器进行测试,遇到如下提示:

查找大量资料,发下是上传方法认证的问题,去掉[授权]属性标签即可,代码修改如下:

使用系统;使用系统IO;使用系统网络.使用系统网络。手动音量调节命名空间TxSms .网络。控制器{///摘要///文件上传管理////摘要//[授权]公共类文件控制器: txsmscontrollerbase { private static string jsonResult=' { 0 } ' result ' : { 1 }, ' message ' : ' { 2 } ', ' filename ' : ' { 3 } ', ' file ext ' : ' { 4 } ' { 5 }//摘要///文件上传页面////summary///returns/returns[Authorize]公共动作结果Index(){ return View();}///摘要///上传文件////summary////param name=' file data '/param///returns/returns//[Authorize]公共操作结果Upload(https tedfiledbase文件数据){//加入认证信息如果(这个LoginUser==null){ 0返回新的JsonStringResult(字符串。格式(jsonResult,' { ',-1 '抱歉,未登录,不允许上传', '', '', '}'));}//如果没有上传文件if (filedata==null || filedata .文件名。IsNullOrEmpty()| |文件数据.内容长度==0){ 0返回新的JsonStringResult(字符串。格式(jsonResult,' { ',-2 '无上传文件', '', '', '}'));}字符串参数路径=请求查询字符串[' path '];字符串参数文件=请求查询字符串[' getzip文件'];if (parmGetzipfile .IsNullOrEmpty()){ ParmGetZipfile=' 0 ';}//保存到~/上传文件夹中,名称不变字符串时间=日期时间现在。ToString(' yyymmdhmmssfff ');字符串文件文本=路径GetExtension(filedata .FileName);字符串文件名=time file ext string VirtualPath=ParmPath .IsNullOrEmpty()?$ ' ~/uploads/' : $ ' ~/uploads/{ ParmPath }/';字符串实际路径=服务器。映射路径(VirtualPath);if(!目录。存在(实际路径)){目录。创建目录(服务器. Mappath(VirtualPath));}//文件系统不能使用虚拟路径var destFile=virtualPath文件名;字符串路径=服务器. MapPath(destFile);文件数据另存为(路径);bool iszip=fileext!=null (fileext .等于('。zip ',StringComparison .ordinaligorcase)ParmGetZipfile .等于(' 1 ');if(iszip){ var virtualPathZip=virtualPath time/';字符串实际路径Zip=服务器. MapPath(VirtualPathZIP);if(!目录。存在(实际路径压缩)){目录创建目录(实际路径zip);} destFile=fileext=//第一步骤,解压TxSmsZipHelper .解压缩文件(路径,实际路径压缩);//第二步骤,获取超过文件,如果没有获取到,则抛出异常//获得目录信息var dir=new DirectoryInfo(实际路径zip);//获得目录文件列表var文件=目录.GetFiles();foreach(文件中的文件信息文件名){//var ext=Path .GetExtension(文件名.姓名)。toLower();//if (ext==' .xls' || ext==' .xlsx’)//{//destFile=路径。组合(文件名.目录名,文件名。名称);//break;//}destFile=virtualPathZip文件名。名称;文件文本=路径. GetExtension(文件名.名称);打破;} }返回新的JsonStringResult(字符串。格式(jsonResult,' { ',0 '上传成功、destFile、fileext .ToLower(),“}”;}公共类JsonStringResult :内容结果{ public JsonStringResult(字符串JSON){内容=JSON内容类型=' application/JSON ';}}}}再次用火狐浏览器测试如下:

4、注意事项

1、封装的射流研究…类库适合单文件上传

2、上传里面的登录认证是通过判断当前账号信息是否为空

3、本项目使用的雄激素结合蛋白框架,有兴趣的可以去了解下:http://www .aspnet样板文件。com/

以上所述是小编给大家介绍的jQuery.uploadify文件上传组件实例讲解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

更多资讯
游戏推荐
更多+