`

java版-JQuery上传插件Uploadify使用实例

阅读更多

运行效果:


包结构图:

 

后台JAVA逻辑:

package com.bijian.study;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;

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;

@SuppressWarnings("serial")
public class Upload extends HttpServlet {

    @SuppressWarnings("unchecked")
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String savePath = this.getServletConfig().getServletContext().getRealPath("");
        savePath = savePath + "/uploads/";

        File f1 = new File(savePath);
        System.out.println(savePath);
        if (!f1.exists()) {
            f1.mkdirs();
        }
        DiskFileItemFactory fac = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(fac);
        upload.setHeaderEncoding("utf-8");
        List fileList = null;
        try {
            fileList = upload.parseRequest(request);
        } catch (FileUploadException ex) {
            return;
        }
        Iterator<FileItem> it = fileList.iterator();
        String name = "";
        String extName = "";
        while (it.hasNext()) {
            FileItem item = it.next();
            if (!item.isFormField()) {
                name = item.getName();
                long size = item.getSize();
                String type = item.getContentType();
                System.out.println(size + " " + type);
                if (name == null || name.trim().equals("")) {
                    continue;
                }
                // 扩展名格式:
                if (name.lastIndexOf(".") >= 0) {
                    extName = name.substring(name.lastIndexOf("."));
                }
                File file = null;
                do {
                    // 生成文件名:
                    name = UUID.randomUUID().toString();
                    file = new File(savePath + name + extName);
                } while (file.exists());
                File saveFile = new File(savePath + name + extName);
                try {
                    item.write(saveFile);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        response.getWriter().print(name + extName);
    }
}

 

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
  <servlet>
    <servlet-name>upload</servlet-name>
    <servlet-class>com.bijian.study.Upload</servlet-class>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>upload</servlet-name>
    <url-pattern>/servlet/Upload</url-pattern>
  </servlet-mapping>
 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

index.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>Upload</title>
 
<!--装载文件-->
<link href="css/uploadify.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="uploadify/jquery-1.9.1.js"></script>
<script type="text/javascript" src="uploadify/jquery.uploadify.min.js"></script>

<!--ready事件-->
<script type="text/javascript">
    $(document).ready(function() {
        $("#uploadify").uploadify({
            'uploader' : 'servlet/Upload',
            'swf' : 'uploadify/uploadify.swf',
            'cancelImg' : 'img/uploadify-cancel.png',
            'folder' : 'uploads',//您想将文件保存到的路径
            'queueID' : 'fileQueue',//与下面的id对应
            'queueSizeLimit' : 5,
            'fileDesc' : 'rar文件或zip文件',
            'fileExt' : '*.rar;*.zip', //控制可上传文件的扩展名,启用本项时需同时声明fileDesc
            'auto' : false,
            'multi' : true,
            'simUploadLimit' : 2,
            'buttonText' : '选择文件',
           	'onDialogOpen' : function() {//当选择文件对话框打开时触发
           		alert( 'Open!');
           	},
           	'onSelect' : function(file) {//当每个文件添加至队列后触发
           		alert( 'id: ' + file.id
           				+ ' - 索引: ' + file.index
           				+ ' - 文件名: ' + file.name
           				+ ' - 文件大小: ' + file.size
           				+ ' - 类型: ' + file.type
           				+ ' - 创建日期: ' + file.creationdate
           				+ ' - 修改日期: ' + file.modificationdate
           				+ ' - 文件状态: ' + file.filestatus);
           	},
           	'onSelectError' : function(file,errorCode,errorMsg) {//当文件选定发生错误时触发
           		alert( 'id: ' + file.id
           			+ ' - 索引: ' + file.index
           			+ ' - 文件名: ' + file.name
         			+ ' - 文件大小: ' + file.size
           			+ ' - 类型: ' + file.type
           			+ ' - 创建日期: ' + file.creationdate
           			+ ' - 修改日期: ' + file.modificationdate
           			+ ' - 文件状态: ' + file.filestatus
           			+ ' - 错误代码: ' + errorCode
           			+ ' - 错误信息: ' + errorMsg);
           	},
           	'onDialogClose' : function(swfuploadifyQueue) {//当文件选择对话框关闭时触发
				if( swfuploadifyQueue.filesErrored > 0 ){
          			alert( '添加至队列时有'
						+swfuploadifyQueue.filesErrored
	           			+'个文件发生错误n'
	           			+'错误信息:'
	           			+swfuploadifyQueue.errorMsg
	           			+'n选定的文件数:'
	           			+swfuploadifyQueue.filesSelected
	           			+'n成功添加至队列的文件数:'
	           			+swfuploadifyQueue.filesQueued
	           			+'n队列中的总文件数量:'
	       				+swfuploadifyQueue.queueLength);
           		}
           	},
           	'onQueueComplete' : function(stats) {//当队列中的所有文件全部完成上传时触发
           		alert( '成功上传的文件数: ' + stats.successful_uploads
           			+ ' - 上传出错的文件数: ' + stats.upload_errors
           			+ ' - 取消上传的文件数: ' + stats.upload_cancelled
           			+ ' - 出错的文件数' + stats.queue_errors);
           	},
           	'onUploadComplete' : function(file,swfuploadifyQueue) {//队列中的每个文件上传完成时触发一次
           		alert( 'id: ' + file.id
           			+ ' - 索引: ' + file.index
           			+ ' - 文件名: ' + file.name
           			+ ' - 文件大小: ' + file.size
           			+ ' - 类型: ' + file.type
           			+ ' - 创建日期: ' + file.creationdate
           			+ ' - 修改日期: ' + file.modificationdate
           			+ ' - 文件状态: ' + file.filestatus);
           	},
           	'onUploadError' : function(file,errorCode,errorMsg,errorString,swfuploadifyQueue) {//上传文件出错是触发(每个出错文件触发一次)
           		alert( 'id: ' + file.id
           			+ ' - 索引: ' + file.index
           			+ ' - 文件名: ' + file.name
           			+ ' - 文件大小: ' + file.size
           			+ ' - 类型: ' + file.type
           			+ ' - 创建日期: ' + file.creationdate
           			+ ' - 修改日期: ' + file.modificationdate
           			+ ' - 文件状态: ' + file.filestatus
           			+ ' - 错误代码: ' + errorCode
           			+ ' - 错误描述: ' + errorMsg
           			+ ' - 简要错误描述: ' + errorString);
           	},
           	'onUploadProgress' : function(file,fileBytesLoaded,fileTotalBytes,queueBytesLoaded,swfuploadifyQueueUploadSize) {//上传进度发生变更时触发
           		alert( 'id: ' + file.id
           			+ ' - 索引: ' + file.index
           			+ ' - 文件名: ' + file.name
           			+ ' - 文件大小: ' + file.size
           			+ ' - 类型: ' + file.type
           			+ ' - 创建日期: ' + file.creationdate
           			+ ' - 修改日期: ' + file.modificationdate
           			+ ' - 文件状态: ' + file.filestatus
           			+ ' - 当前文件已上传: ' + fileBytesLoaded
           			+ ' - 当前文件大小: ' + fileTotalBytes
           			+ ' - 队列已上传: ' + queueBytesLoaded
           			+ ' - 队列大小: ' + swfuploadifyQueueUploadSize);
           	},
           	'onUploadStart': function(file) {//上传开始时触发(每个文件触发一次)
           		alert( 'id: ' + file.id
           			+ ' - 索引: ' + file.index
           			+ ' - 文件名: ' + file.name
           			+ ' - 文件大小: ' + file.size
           			+ ' - 类型: ' + file.type
           			+ ' - 创建日期: ' + file.creationdate
           			+ ' - 修改日期: ' + file.modificationdate
           			+ ' - 文件状态: ' + file.filestatus );
           	},
           	'onUploadSuccess' : function(file,data,response) {//上传完成时触发(每个文件触发一次)
           		alert( 'id: ' + file.id
           			+ ' - 索引: ' + file.index
           			+ ' - 文件名: ' + file.name
           			+ ' - 文件大小: ' + file.size
           			+ ' - 类型: ' + file.type
           			+ ' - 创建日期: ' + file.creationdate
           			+ ' - 修改日期: ' + file.modificationdate
           			+ ' - 文件状态: ' + file.filestatus
           			+ ' - 服务器端消息: ' + data
           			+ ' - 是否上传成功: ' + response);
           	}
        });
    });
</script>
</head>
 
<body>
    <div id="fileQueue"></div>
    <input type="file" name="uploadify" id="uploadify" />
    <p>
    	<!-- 上传第一个未上传的文件 -->
      	<a href="javascript:$('#uploadify').uploadify('upload')">上传</a>
      	<!-- 取消第一个未取消的文件 -->
        <a href="javascript:$('#uploadify').uploadify('cancel')">取消上传</a>
        
        <a href="javascript:$('#uploadify').uploadify('upload','*')">开始上传所有文件</a>&nbsp;
        <a href="javascript:$('#uploadify').uploadify('cancel','*')">取消所有上传</a>
    </p>
</body>
</html>

 

附:

JQuery uploadify官方下载 http://www.uploadify.com/download/

JQuery uploadify官方文档 http://www.uploadify.com/documentation/

JQuery uploadify官方演示 http://www.uploadify.com/demos/

  • 大小: 34.5 KB
  • 大小: 59.9 KB
分享到:
评论
3 楼 iloveakira 2014-04-10  
我是初学者,问楼主一个问题,我把upload.jsp放在了WebContent/jsp下面,相关css和js文件的路径也都改过了,upload页面能load出来,所以这些路径应该没有问题,但是选择了文件点upload的时候,会出现如下错误:
NetworkError: 404 Not Found - http://XXXX:XXXX/testUpload/jsp/"
testUpload是我的工程名字。
如果我把upload.jsp放在WebContent下面,就没有这个错误,为什么呢?

谢谢回答先。
2 楼 bijian1013 2014-04-04  
网上给出的解释是因为当commons-fileupload包从版本1.0升到1.1时,DeferredFileOutputStream.class被移走了,如果Tomcat使用1.1及其以上版本,你得为它找到这个类。
解决方法:
进入目录:$CATALINA/server/webapps/manager/WEB-INF/lib,检查是否存在三个包:
commons-io
catalina-manager.jar
commons-fileupload.jar
如果缺少commons-io,拷一个过来。

或者直接使用老版本的commons-fileupload.jar

如包结构图所示,我的这个工程的WebContent/WEB-INF/lib目录下有commons-codec.jar、commons-fileupload-1.2.2.jar、commons-io-1.4.jar这三个jar。
1 楼 lanxin_zxy_it 2014-04-03  
问楼主一个问题, fileList = upload.parseRequest(request);   这行代码报错,收找不到这个类
java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream


请问是什么原因,  我用的jsp和servlet

相关推荐

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

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

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

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

    jquery上传控件 Uploadify 实例 .net,jsp,php三种版本

    - `jquery上传插件uploadify在jsp中的使用.docx`:这份文档详细介绍了如何在JSP项目中配置和使用Uploadify,包括前端和后端的完整示例。 - `JQueryUploadDemo net版本.rar`:这是一个.NET版本的Uploadify示例项目,...

    Asp.net 上传 Jquery.Uploadify 实例

    在本文中,我们将深入探讨如何在Asp.net环境中利用Jquery.Uploadify插件实现文件的批量上传功能。Asp.net是一种强大的Web应用程序框架,而Jquery.Uploadify是jQuery库的一个扩展,专门用于处理文件上传,它允许用户...

    jquery.uploadify实例Demo

    本实例Demo基于jQuery.uploadify 3.2.1版本,是该插件的最新稳定版,经过测试,在Internet Explorer、Firefox以及Google Chrome等主流浏览器下都能正常运行,提供了良好的兼容性保障。 jQuery.uploadify的核心功能...

    JQuery批量上传插件Uploadify使用详解及参数说明.docx

    **jQuery批量上传插件Uploadify**是一款非常实用的前端文件上传工具,它允许用户通过Flash技术实现批量、异步的文件上传。Uploadify提供了一系列可配置的参数,使其能够适应各种上传需求,同时具备良好的用户体验。 ...

    uploadify批量上传实例

    Uploadify是一款广泛应用于Web开发中的JavaScript插件,主要用于实现文件的拖放上传和批量上传功能。这个实例展示了如何在项目中有效地集成Uploadify,以提供用户友好的文件上传体验。以下是对Uploadify批量上传实例...

    Jquery uploadify上传插件使用详解

    JQuery上传插件Uploadify是一种流行的基于Flash的文件上传组件,它与JQuery框架结合使用,提供了一个简便的方式来实现文件的上传功能,并带有上传进度条显示。在Web开发中,文件上传是一个常见的需求,使用JQuery ...

    jquery里uploadify的样例代码 文件上传

    Uploadify是一款基于jQuery的插件,用于实现文件上传功能,它提供了丰富的自定义选项和友好的用户体验。在本文中,我们将深入探讨jQuery Uploadify插件的使用方法,包括基本配置、事件处理、样式定制以及与服务器端...

    JQuery uploadify 实现批量上传例子

    而Uploadify则是JQuery的一个插件,它提供了一种优雅的方式来实现文件的上传功能,包括单个文件上传和批量上传。本篇文章将详细介绍如何使用JQuery uploadify实现批量上传功能,并探讨其核心原理和相关配置。 首先...

    UploadiFive文件上传插件v1.2.2-standard,基于HMTL5和jQuery,前身Uploadify,支持拖拽手机和手机上传

    UploadiFive是一款来自国外的、优秀的jQuery插件,主要功能是上传文件,支持文件的批量上传、拖拽上传等,是一个易集成的多文件上传解决方案。 其前身Uploadify在很多项目中已被广泛之用,但是Uploadify需要Flash的...

    上传插件-uploadify-修改版

    Uploadify是一款广泛使用的JavaScript上传插件,它基于jQuery库,为用户提供了一种高效、美观的文件上传解决方案。这个“修改版”可能包含了作者或社区针对原版Uploadify所做的功能优化、错误修复或自定义功能。 1....

    Uploadify jar包及使用实例

    在Java环境中,我们经常需要将Uploadify与jar包结合使用,以便在Web应用中实现文件上传功能。本文将深入探讨Uploadify的jar包及其在Java环境中的使用实例。 首先,Uploadify jar包是该插件在服务器端处理文件上传的...

    uploadify java版实例代码

    上传功能在我们的程序中是经常会用到的,而传统的http上传在... 那么今天我要给大家介绍额就是一款jQuery的无刷新上传插件 -Uploadify,他有免费版和收费版两种,免费版的是用Flash实现的,而收费版的是用html5实现的

    jQuery Uploadify文件批量上传实例

    jQuery Uploadify文件批量上传实例 自己对jQuery Uploadify插件稍作整理,样式不合适可以根据自己的需要修改; 可以实现多文件上传,同时显示上传进度条和百分比,上传完毕后将统计上传文件的总数量、文件总大小和...

    jquery-uploadify2.1和3.1两个版本源代码

    基于jquery的上传插件Uploadify,无论在功能、外观、可用性和扩展性上都有不错表现,于是研究了一番,同时把jquery-uploadify-2.1版本和jquery-uploadify-3.1版本比较了一下,而且该上传程序就是这两个版本的实例代码...

    uploadify多图上传实例

    1. **Uploadify插件介绍**:Uploadify是一个jQuery插件,它通过Flash和HTML5技术实现了异步文件上传,支持进度条显示、文件类型限制、上传前后的回调函数等功能,提高了用户体验。 2. **jQuery库**:jQuery简化了...

    聊一聊jQuery插件uploadify使用方法

    uploadify是一款流行的jQuery插件,广泛用于文件上传功能的实现。它能够让用户在网页上选择文件并进行上传,同时也支持进度显示、文件类型过滤、文件上传队列管理等功能。下面是使用uploadify插件时应注意的知识点:...

    JQuery的Uploadify实现多文件上传例子

    Uploadify是一款非常流行的jQuery插件,它为用户提供了简单、直观的文件上传体验,尤其适用于需要处理大量文件上传的场景。 首先,我们需要了解Uploadify的基本原理。Uploadify利用HTML5的File API和Flash技术,...

    JQuery Uploadify 基于JSP的无刷新上传实例:

    《JQuery Uploadify基于JSP的无刷新上传实例详解》 在现代Web开发中,用户交互体验至关重要,其中文件上传功能是不可或缺的一部分。传统的文件上传方式通常需要页面刷新,这在用户体验上存在明显的不足。JQuery ...

Global site tag (gtag.js) - Google Analytics