`
yangpanwww
  • 浏览: 624895 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JQuery上传插件Uploadify并传参数(一)

阅读更多

Uploadify是JQuery的一个上传插件,实现的效果非常不错,进度显示或者速度显示都可以!

  • 官方 : http://www.uploadify.com/
  •  

     

    同时。。我已经使用最新版写了个。大家可以看这么的这个。。

      

    文章: JQuery上传插件Uploadify并传参数(二)

    链接: http://yangpanwww.iteye.com/blog/1550508

     

     

    也可以去看看官网上面的 dome  下载包...API  等

     

    下面是我开发过程遇到的一些问题总结:

     1、上传失败 IO ERROR    ------测试是否是 servlet 等配置或者关注flash的版本

     2、前台传参中文乱码  -----------这个要根据应用服务器不同可能不同吧...反正只要我们的 界面、界面传参以及后台接收的编码设置一致应该就没上面问题..反正这个问题好解决的...

     3、批量上传的时候,只有第一个附件上传的时候可以接收到前台传来的name参数,而后面的参数都为null-------设置'simUploadLimit' : 1, // 一次同步上传的文件数目为 1,问题解决...当初这个问题可是难了我好久!fuck

     

    嘿嘿....下面我贴出代码 

     

     jsp:

     

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
    <%
    	String path = request.getContextPath(); 
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    	<head> 
    	    <title>QQ:609865047  ---  妞见妞爱</title>
    		<meta http-equiv="pragma" content="no-cache">
    		<meta http-equiv="cache-control" content="no-cache">
    		<meta http-equiv="expires" content="0">
    	</head>
    
    	<body> 
    		<link href="js/uploadify.css" rel="stylesheet" type="text/css" />
    		<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
    		<script type="text/javascript" src="js/swfobject.js"></script>
    		<script type="text/javascript" src="js/jquery.uploadify.v2.1.0.min.js"></script>
    		<script type="text/javascript">
    		 $(document).ready(function() {
    		  $("#uploadify").uploadify({
    		   'uploader'       : 'js/uploadify.swf',
    		   'script'         : 'scripts/uploadify',//servlet的路径或者.jsp 这是访问servlet 'scripts/uploadif' 
    		   'method'         :'GET',  //如果要传参数,就必须改为GET
    		   'cancelImg'      : 'js/cancel.png',
    		   'folder'         : 'uploads', //要上传到的服务器路径,
    		   'queueID'        : 'fileQueue',
    		   'auto'           : false, //选定文件后是否自动上传,默认false
    		   'multi'          : true, //是否允许同时上传多文件,默认false
    		   'simUploadLimit' : 1, //一次同步上传的文件数目  
    		   'sizeLimit'      : 19871202, //设置单个文件大小限制,单位为byte  
    		   'queueSizeLimit' : 5, //限制在一次队列中的次数(可选定几个文件)。默认值= 999,而一次可传几个文件有 simUploadLimit属性决定。
    		   'fileDesc'       : '支持格式:jpg或gif', //如果配置了以下的'fileExt'属性,那么这个属性是必须的  
    		   'fileExt'        : '*.jpg;*.gif',//允许的格式
    		   'scriptData'     :{'name':$('#name').val()}, // 多个参数用逗号隔开 'name':$('#name').val(),'num':$('#num').val(),'ttl':$('#ttl').val()
    		    onComplete: function (event, queueID, fileObj, response, data) {
    		    var value = response ;
    		       alert("文件:" + fileObj.name + "上传成功");
    		    },  
    		    onError: function(event, queueID, fileObj) {  
    		     alert("文件:" + fileObj.name + "上传失败");  
    		    },  
    		    onCancel: function(event, queueID, fileObj){  
    		     alert("取消了" + fileObj.name);  
    		      } 
    		  });
    		 });
    		 
    		 
    		 function uploasFile(){ 
    		 	  //校验
    		 	  var name=document.getElementById("name").value; 
    			  if(name.replace(/\s/g,'') == ''){
    					alert("名称不能为空!");
    					return false;
    			  }  
    			  //设置 scriptData 的参数
    		      $('#uploadify').uploadifySettings('scriptData',{'name':$('#name').val()});
    		      //上传
    		 	  jQuery('#uploadify').uploadifyUpload() 	 		 
    		 }
    		  
    		 
     </script>
             名称:<input type="text" id="name" name="name" value="妞见妞爱" >
    		<div id="fileQueue"></div> 
    		<input type="file" name="uploadify" id="uploadify" />
    		<p>
    			<a href="javascript:uploasFile()">开始上传</a>&nbsp;
    			<a href="javascript:jQuery('#uploadify').uploadifyClearQueue()">取消所有上传</a>
    		</p>
    	</body>
    </html>

      

     

     

     Uploadify.java

     

      

    package com;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Iterator;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.apache.commons.fileupload.util.Streams;
     
    
    public class Uploadify extends HttpServlet {
    	 
    	private static final long serialVersionUID = 1L;
    
    	/**
    	 * 实现多文件的同时上传
    	 */ 
    	public void doGet(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
    		
    		//设置接收的编码格式
    		request.setCharacterEncoding("UTF-8");
    		Date date = new Date();//获取当前时间
    		SimpleDateFormat sdfFileName = new SimpleDateFormat("yyyyMMddHHmmss");
    		SimpleDateFormat sdfFolder = new SimpleDateFormat("yyMM");
    		String newfileName = sdfFileName.format(date);//文件名称
    		String fileRealPath = "";//文件存放真实地址
    		
    		String fileRealResistPath = "";//文件存放真实相对路径
    		
    		//名称  界面编码 必须 和request 保存一致..否则乱码
    		String name = request.getParameter("name");
    			
    		 
    		String firstFileName="";
    		// 获得容器中上传文件夹所在的物理路径
    		String savePath = this.getServletConfig().getServletContext().getRealPath("/") + "uploads\\" + newfileName +"\\";
    		System.out.println("路径" + savePath);
    		File file = new File(savePath);
    		if (!file.isDirectory()) {
    			file.mkdir();
    		}
    
    		try {
    			DiskFileItemFactory fac = new DiskFileItemFactory();
    			ServletFileUpload upload = new ServletFileUpload(fac);
    			upload.setHeaderEncoding("UTF-8");
    			// 获取多个上传文件
    			List fileList = fileList = upload.parseRequest(request);
    			// 遍历上传文件写入磁盘
    			Iterator it = fileList.iterator();
    			while (it.hasNext()) {
    				FileItem item = (FileItem) it.next();
    				
    				// 如果item是文件上传表单域   
    				// 获得文件名及路径   
    				String fileName = item.getName();
    				if (fileName != null) {
    					firstFileName=item.getName().substring(item.getName().lastIndexOf("\\")+1);
    					String formatName = firstFileName.substring(firstFileName.lastIndexOf("."));//获取文件后缀名
    					fileRealPath = savePath + newfileName+ formatName;//文件存放真实地址
    					
    					BufferedInputStream in = new BufferedInputStream(item.getInputStream());// 获得文件输入流
    					BufferedOutputStream outStream = new BufferedOutputStream(new FileOutputStream(new File(fileRealPath)));// 获得文件输出流
    					Streams.copy(in, outStream, true);// 开始把文件写到你指定的上传文件夹
    					//上传成功,则插入数据库
    					if (new File(fileRealPath).exists()) {
    						//虚拟路径赋值
    						fileRealResistPath=sdfFolder.format(date)+"/"+fileRealPath.substring(fileRealPath.lastIndexOf("\\")+1);
    						//保存到数据库
    						System.out.println("保存到数据库:");
    						System.out.println("name:"+name);
    						System.out.println("虚拟路径:"+fileRealResistPath);
    					}
    					 
    				} 
    			} 
    		} catch (FileUploadException ex) {
    			ex.printStackTrace();
    			System.out.println("没有上传文件");
    			return;
    	   } 
    	   response.getWriter().write("1");
    		
    	}
     
    	public void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		doGet(req, resp);
    	}
    }

     

    web.xml

     

     

     <servlet>
      <servlet-name>Uploadify</servlet-name>
      <servlet-class>com.Uploadify</servlet-class>
     </servlet>
     <servlet-mapping>
      <servlet-name>Uploadify</servlet-name>
      <url-pattern>/scripts/uploadify</url-pattern>
     </servlet-mapping>

     

      效果图片看及 dome 见附件~~~~~~~~~~~

     

       

      我也是根据 dada_fangfang 大哥 http://dada-fangfang.iteye.com/blog/865177 文章改进来的....

      这边有 struts 和 springmvc 的写法...但是..他那边就纯粹的上传文件...如果还需要传参数的话!

     

     我的这篇就 希望对大家有所帮助!

     

     效果图:

    图1:

    图2:
     

     

       

    • 大小: 8.2 KB
    • 大小: 24.3 KB
    分享到:
    评论
    5 楼 瑞马23 2016-06-14  
    uploadifySettings is not a function

    lz怎么回事
    4 楼 chen_lian 2014-10-16  
    正在研究学习楼主的代码
    3 楼 丹寺丁 2014-04-03  
    怎么下载不成功
    2 楼 zhujiabiao_cangcang 2012-01-07  
    fileDataName:'images'------>后台接收的参数名

    File images;
    1 楼 tiantianfei 2011-05-20  
    收下啦

    相关推荐

      JQuery批量上传插件Uploadify并传参数(二)

      这篇博客文章“JQuery批量上传插件Uploadify并传参数(二)”可能深入探讨了如何在使用Uploadify时传递额外参数,以增强其功能和定制性。 Uploadify是一款基于jQuery的JavaScript库,它允许用户通过拖放或选择多个...

      JQuery上传插件Uploadify

      总之,jQuery上传插件Uploadify是一个强大且灵活的工具,可以帮助开发者轻松地实现在网页上的文件上传功能,通过定制其参数和事件,可以满足各种项目需求。但随着技术的发展,考虑向HTML5的File API迁移也是必要的,...

      jQuery上传插件uploadify

      **jQuery上传插件Uploadify详解** Uploadify是一款基于...总之,jQuery上传插件Uploadify是提高Web应用中文件上传体验的利器,通过其丰富的参数设置和事件处理,开发者可以定制出满足各种需求的文件上传解决方案。

      jquery文件上传插件 jquery.uploadify.js

      在Web开发中,文件上传功能是一项常见的需求,而jQuery.uploadify.js是一款高效且用户友好的文件上传插件,尤其对于需要兼容多种浏览器的项目来说,它提供了一种优雅的解决方案。这款插件原本不支持IE10,但在经过...

      jquery 上传插件Uploadify-v3.0.0.zip

      jQuery Uploadify是一款广泛使用的文件上传插件,它极大地简化了在Web应用中实现多文件上传的功能。这个插件的主要版本是v3.0.0,它提供了丰富的自定义选项和良好的用户体验。在本文中,我们将深入探讨Uploadify的...

      C# JQuery上传插件Uploadify使用

      Uploadify是一款基于JavaScript和Flash的文件上传插件,它与jQuery库紧密结合,为Web应用程序提供了简单易用且功能丰富的文件上传功能。在C#后端环境中,Uploadify可以帮助开发者实现多文件同时上传,大大提升了用户...

      .net jQuery上传插件Uploadify 文件 上传 实例,简单易懂

      在.NET开发中,文件上传是一项常见的任务,而jQuery Uploadify插件则为这一过程提供了便捷的解决方案。Uploadify是一款基于JavaScript和Flash的文件上传组件,它允许用户通过拖拽或选择文件的方式,实现多文件同时...

      JQuery上传插件Uploadify使用详解

      《JQuery上传插件Uploadify的全面解析与应用》 在Web开发中,文件上传功能是必不可少的一部分,而JQuery插件Uploadify则提供了一种优雅、高效的解决方案。Uploadify是一款基于JQuery的插件,它支持多文件上传、...

      jquery上传插件uploadify+php完美实现强大的文件上传功能实例+程序

      本实例将探讨如何利用jQuery上传插件Uploadify与PHP技术来构建一个强大的文件上传系统。Uploadify是一款广泛使用的前端插件,它使得文件上传过程更加直观、用户友好,并且支持批量上传和自定义样式,极大地提升了...

      JQuery上传插件Uploadify使用示例

      Uploadify是由Aaron Balog开发的一款基于jQuery的文件上传插件。它利用HTML5的File API和Flash技术,提供了丰富的功能和自定义选项,使得文件上传变得简单易用。Uploadify支持异步上传,用户可以在不刷新页面的情况...

      JQuery上传插件Uploadify使用详解.pdf

      jQuery Uploadify 是一款基于jQuery的文件上传插件,它提供了用户友好的界面,支持多文件选择、上传进度显示以及批量上传等功能。这个插件适用于那些希望在网页中实现复杂文件上传功能的开发者。Uploadify 通过Flash...

      jquery插件uploadify

      `jQuery Uploadify` 是一个基于 jQuery 的前端文件上传插件,它允许用户通过浏览器实现多文件选择、上传进度显示、上传失败重试等高级功能。这个插件在Web开发中非常流行,因为它提供了丰富的自定义选项和良好的用户...

      jquery上传插件Uploadify3.2中文详细参考手册.pdf

      jQuery Uploadify是一款强大的、无刷新的文件上传插件,它使得用户在网页上进行文件上传时无需等待页面刷新,极大地提升了用户体验。Uploadify 3.2版本是其发展过程中的一个重要里程碑,提供了许多改进和新特性。 *...

      jquery上传插件Uploadify3.2中文详细参考手册

      ### jQuery上传插件Uploadify 3.2中文详细参考手册 #### 一、概述 Uploadify是一款基于jQuery的文件上传插件,它提供了一个简单易用的接口来处理文件上传功能,尤其适用于需要多文件上传、文件预览等功能的场景。...

      jquery.uploadify-v2.1.4[修正版]

      在Web开发中,上传功能是不可或缺的一部分,而jQuery.uploadify插件以其强大的功能和易用性深受开发者喜爱。这个"jquery.uploadify-v2.1.4[修正版]"正是基于官方的v2.1.4版本进行了一次关键的优化,特别针对中文支持...

      JQuery上传插件Uploadify使用详解.docx

      Uploadify 是一款基于 jQuery 的文件上传插件,它支持多文件选择、上传进度显示等功能,为用户提供了良好的交互体验。在 ASP.NET 环境中使用 Uploadify,我们需要完成以下步骤: 1. **安装和引入资源**:首先,下载...

      超棒的jquery上传插件Uploadify3.1中文详细参考手册

      Uploadify是一款基于JQuery的上传插件,能够实现高效且美观的文件上传功能。它为开发者提供了一个易于使用的API,使得集成文件上传功能变得简单便捷。对于初学者而言,Uploadify提供了详细的配置选项和事件,使得...

    Global site tag (gtag.js) - Google Analytics