




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Uploadify在A中的使用Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示。首先按下面的步骤来实现一个简单的上传功能。1 创建Web项目,命名为JQueryUploadDemo,从官网上下载最新的版本解压后添加到项目中。2 在项目中添加UploadHandler.ashx文件用来处理文件的上传。3 在项目中添加UploadFile文件夹,用来存放上传的文件。进行完上面三步后项目的基本结构如下图:4 Default.aspx的html页的代码修改如下: Uploadify $(document).ready(function() $(#uploadify).uploadify( uploader: JS/jquery.uploadify-v2.1.0/uploadify.swf, script: UploadHandler.ashx, cancelImg: JS/jquery.uploadify-v2.1.0/cancel.png, folder: UploadFile, queueID: fileQueue, auto: false, multi: true ); ); 上传| 取消上传 5 UploadHandler类的ProcessRequest方法代码如下:public void ProcessRequest(HttpContext context) context.Response.ContentType = text/plain; context.Response.Charset = utf-8; HttpPostedFile file = context.Request.FilesFiledata; string uploadPath = HttpContext.Current.Server.MapPath(context.Requestfolder)+; if (file != null) if (!Directory.Exists(uploadPath) Directory.CreateDirectory(uploadPath); file.SaveAs(uploadPath + file.FileName); /下面这句代码缺少的话,上传成功后上传队列的显示不会自动消失 context.Response.Write(1); else context.Response.Write(0); 6 运行后效果如下图:7 选择了两个文件后,点击上传,就可以看到UploadFile文件夹中会增加这两个文件。上面简单地实现了一个上传的功能,依靠函数uploadify实现,uploadify函数的参数为json格式,可以对json对象的key值的修改来进行自定义的设置,如multi设置为true或false来控制是否可以进行多文件上传,下面就来介绍下这些key值的意思:uploader : uploadify.swf 文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击后淡出打开文件对话框,默认值:uploadify.swf。 script : 后台处理程序的相对路径 。默认值:uploadify.php checkScript :用来判断上传选择的文件在服务器是否存在的后台处理程序的相对路径 fileDataName :设置一个名字,在服务器处理程序中根据该名字来取上传文件的数据。默认为Filedata method : 提交方式Post 或Get 默认为Post scriptAccess :flash脚本文件的访问模式,如果在本地测试设置为always,默认值:sameDomain folder : 上传文件存放的目录 。 queueID : 文件队列的ID,该ID与存放文件队列的div的ID一致。 queueSizeLimit : 当允许多文件生成时,设置选择文件的个数,默认值:999 。 multi : 设置为true时可以上传多个文件。 auto : 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 。 fileDesc : 这个属性值必须设置fileExt属性后才有效,用来设置选择文件对话框中的提示文本,如设置fileDesc为“请选择rar doc pdf文件”,打开文件选择框效果如下图: fileExt : 设置可以选择的文件的类型,格式如:*.doc;*.pdf;*.rar 。 sizeLimit : 上传文件的大小限制 。 simUploadLimit : 允许同时上传的个数 默认值:1 。 buttonText : 浏览按钮的文本,默认值:BROWSE 。 buttonImg : 浏览按钮的图片的路径 。 hideButton : 设置为true则隐藏浏览按钮的图片 。 rollover : 值为true和false,设置为true时当鼠标移到浏览按钮上时有反转效果。 width : 设置浏览按钮的宽度 ,默认值:110。 height : 设置浏览按钮的高度 ,默认值:30。 wmode : 设置该项为transparent 可以使浏览按钮的flash背景文件透明,并且flash文件会被置为页面的最高层。 默认值:opaque 。 cancelImg :选择文件到文件队列中后的每一个文件上的关闭按钮图标,如下图:上面介绍的key值的value都为字符串或是布尔类型,比较简单,接下来要介绍的key值的value为一个函数,可以在选择文件、出错或其他一些操作的时候返回一些信息给用户。onInit : 做一些初始化的工作。onSelect :选择文件时触发,该函数有三个参数1)event:事件对象。 2)queueID:文件的唯一标识,由6为随机字符组成。 3)fileObj:选择的文件对象,有name、size、creationDate、modificationDate、type 5个属性。代码如下:$(document).ready(function() $(#uploadify).uploadify( uploader: JS/jquery.uploadify-v2.1.0/uploadify.swf, script: UploadHandler.ashx, cancelImg: JS/jquery.uploadify-v2.1.0/cancel.png, folder: UploadFile, queueID: fileQueue, auto: false, multi: true, onInit:function()alert(1);, onSelect: function(e, queueId, fileObj) alert(唯一标识: + queueId + rn + 文件名: + fileO + rn + 文件大小: + fileObj.size + rn + 创建时间: + fileObj.creationDate + rn + 最后修改时间: + fileObj.modificationDate + rn + 文件类型: + fileObj.type ); );); 当选择一个文件后弹出的消息如下图:onSelectOnce :在单文件或多文件上传时,选择文件时触发。该函数有两个参数event,data,data对象有以下几个属性:1)fileCount:选择文件的总数。 2)filesSelected:同时选择文件的个数,如果一次选择了3个文件该属性值为3。 3)filesReplaced:如果文件队列中已经存在A和B两个文件,再次选择文件时又选择了A和B,该属性值为2。 4)allBytesTotal:所有选择的文件的总大小。 onCancel : 当点击文件队列中文件的关闭按钮或点击取消上传时触发。该函数有event、queueId、fileObj、data四个参数,前三个参数同onSelect 中的三个参数,data对象有两个属性fileCount和allBytesTotal。1)fileCount:取消一个文件后,文件队列中剩余文件的个数。 2)allBytesTotal:取消一个文件后,文件队列中剩余文件的大小。 onClearQueue :当调用函数fileUploadClearQueue时触发。有event和data两个参数,同onCancel 中的两个对应参数。onQueueFull :当设置了queueSizeLimit并且选择的文件个数超出了queueSizeLimit的值时触发。该函数有两个参数event和queueSizeLimit。onError :当上传过程中发生错误时触发。该函数有event、queueId、fileObj、errorObj四个参数,其中前三个参数同上,errorObj对象有type和info两个属性。1)type:错误的类型,有三种HTTP, IO, or Security 2)info:错误的描述 onOpen :点击上传时触发,如果auto设置为true则是选择文件时触发,如果有多个文件上传则遍历整个文件队列。该函数有event、queueId、fileObj三个参数,参数的解释同上。onProgress :点击上传时触发,如果auto设置为true则是选择文件时触发,如果有多个文件上传则遍历整个文件队列,在onOpen之后触发。该函数有event、queueId、fileObj、data四个参数,前三个参数的解释同上。data对象有四个属性percentage、bytesLoaded、allBytesLoaded、speed:1)percentage:当前完成的百分比 2)bytesLoaded:当前上传的大小 3)allBytesLoaded:文件队列中已经上传完的大小 4)speed:上传速率 kb/s onComplete:文件上传完成后触发。该函数有四个参数event、queueId、fileObj、response、data五个参数,前三个参数同上。response为后台处理程序返回的值,在上面的例子中为1或0,data有两个属性fileCount和speed1)fileCount:剩余没有上传完成的文件的个数。 2)speed:文件上传的平均速率 kb/s 注:fileObj对象和上面讲到的有些不太一样,onComplete 的fileObj对象有个filePath属性可以取出上传文件的路径。onAllComplete:文件队列中所有的文件上传完成后触发。该函数有event和data两个参数,data有四个属性,分别为:1)filesUploaded :上传的所有文件个数。 2)errors :出现错误的个数。 3)allBytesLoaded :所有上传文件的总大小。 4)speed :平均上传速率 kb/s 相关函数介绍在上面的例子中已经用了uploadifyUpload和uploadifyClearQueue两个函数,除此之外还有几个函数:uploadifySettings:可以动态修改上面介绍的那些key值,如下面代码$(#uploadify).uploadifySettings(folder,JS);如果上传按钮的事件写成下面这样,文件将会上传到uploadifySettings定义的目录中上传uploadifyCancel:该函数接受一个queueID作为参数,可以取消文件队列中指定queueID的文件。$(#uploadify).uploadifyCancel(id);Uploadify在JSP中的使用Web上传文件是一个很常用的功能,试用过不少上传组件,要么是每次只能选择一个文件,要么是选择了文件后不能取消,直接上传,要么就是对文件、队列等限制支持不佳。总之仅仅是依靠JavaScript的实现不太好用,Flash+JavaScript的方式似乎对于这种上传需求满足得更好。今天试用了一下uploadify,发现效果不错,可以看看它的Demo。首先下载,选最上面那个最新的版本,下载回来的压缩包包括所有源文件和php的例子外加上pdf文档,真是比较厚道。他的实现是用的PHP,当然可以使用任何其他后台语言进行实现,这里我用Java实现一把,为了便于观看,放上工程布局。注意:工程中需要引入commons-fileupload的包。这里只列举需要自己修改或实现的代码:upload.javapackageservlet;importjava.io.File;importjava.io.IOException;importjava.util.Iterator;importjava.util.List;importjava.util.UUID;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;mons.fileupload.FileItem;mons.fileupload.FileUploadException;mons.fileupload.disk.DiskFileItemFactory;mons.fileupload.servlet.ServletFileUpload;SuppressWarnings(serial)publicclassUploadextendsHttpServletSuppressWarnings(unchecked)publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionStringsavePath=this.getServletConfig().getServletContext().getRealPath();savePath=savePath+/uploads/;Filef1=newFile(savePath);System.out.println(savePath);if(!f1.exists()f1.mkdirs();DiskFileItemFactoryfac=newDiskFileItemFactory();ServletFileUploadupload=newServletFileUpload(fac);upload.setHeaderEncoding(utf-8);ListfileList=null;tryfileList=upload.parseRequest(request);catch(FileUploadExceptionex)return;Iteratorit=fileList.iterator();Stringname=;StringextName=;while(it.hasNext()FileItemitem=it.next();if(!item.isFormField()name=item.getName();longsize=item.getSize();Stringtype=item.getContentType();System.out.println(size+type);if(name=null|name.trim().equals()continue;/扩展名格式:if(name.lastIndexOf(.)=0)extName=name.substring(name.lastIndexOf(.);Filefile=null;do/生成文件名:name=UUID.randomUUID().toString();file=newFile(savePath+name+extName);while(file.exists();FilesaveFile=newFile(savePath+name+extName);tryitem.write(saveFile);catch(Exceptione)e.printStackTrace();response.getWriter().print(name+extName);index.jspbasehref=Uploadify$(document).ready(function()$(#uploadify).uploadify(uploader:uploadify.swf,script:servlet/Upload,cancelImg:images/cancel.png,folder:uploads,queueID:fileQueue,auto:false,multi:true,simUploadLimit:2,buttonText:BROWSE););开始上传 取消所有上传web.xmlUploadservlet.UploadUpload/servlet/Uploadindex.jsp文中没有对代码进行过多说明,jav
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46098-2025汽车主动降噪系统性能要求和试验方法
- 放射性矿石磁选分离工艺考核试卷及答案
- 海洋水文气象观测员晋升考核试卷及答案
- D供应商分类标准及注册评价等测试卷附答案
- 银行招聘文秘试题及答案
- 银行行长考核试题及答案
- 中职专业试题及答案
- 电力专业试题及答案
- 茶学专业试题及答案
- 中药鉴定专业试题及答案
- 安徽省定远县藕塘中学高三上学期周考训练物理试题
- 邮政银行一点一策课件
- 餐饮咨询顾问合同范本
- 四级专项模拟考试题库及答案
- 川教版(2024)七年级上册信息科技全册教案
- 2025-2026学年新疆师范大学附属实验高中高三数学第一学期期末统考试题
- DBJ50-T-157-2022房屋建筑和市政基础设施工程施工现场从业人员配备标准
- 直播责任自负书
- 2023年太原市第二热力有限责任公司招聘笔试题库及答案解析
- DDI辅导员工迈向成功-辅导领导力系列
- 煤矿井筒装备安装方案
评论
0/150
提交评论