运行效果:
包结构图:
后台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> <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/
相关推荐
在.NET开发中,文件上传是一项常见的任务,而jQuery Uploadify插件则为这一过程提供了便捷的解决方案。Uploadify是一款基于JavaScript和Flash的文件上传组件,它允许用户通过拖拽或选择文件的方式,实现多文件同时...
本实例将探讨如何利用jQuery上传插件Uploadify与PHP技术来构建一个强大的文件上传系统。Uploadify是一款广泛使用的前端插件,它使得文件上传过程更加直观、用户友好,并且支持批量上传和自定义样式,极大地提升了...
基于jquery的上传插件Uploadify,无论在功能、外观、可用性和扩展性上都有不错表现,于是研究了一番,同时把jquery-uploadify-2.1版本和jquery-uploadify-3.1版本比较了一下,而且该上传程序就是这两个版本的实例代码...
- `jquery上传插件uploadify在jsp中的使用.docx`:这份文档详细介绍了如何在JSP项目中配置和使用Uploadify,包括前端和后端的完整示例。 - `JQueryUploadDemo net版本.rar`:这是一个.NET版本的Uploadify示例项目,...
在本文中,我们将深入探讨如何在Asp.net环境中利用Jquery.Uploadify插件实现文件的批量上传功能。Asp.net是一种强大的Web应用程序框架,而Jquery.Uploadify是jQuery库的一个扩展,专门用于处理文件上传,它允许用户...
本实例Demo基于jQuery.uploadify 3.2.1版本,是该插件的最新稳定版,经过测试,在Internet Explorer、Firefox以及Google Chrome等主流浏览器下都能正常运行,提供了良好的兼容性保障。 jQuery.uploadify的核心功能...
**jQuery批量上传插件Uploadify**是一款非常实用的前端文件上传工具,它允许用户通过Flash技术实现批量、异步的文件上传。Uploadify提供了一系列可配置的参数,使其能够适应各种上传需求,同时具备良好的用户体验。 ...
Uploadify是一款广泛应用于Web开发中的JavaScript插件,主要用于实现文件的拖放上传和批量上传功能。这个实例展示了如何在项目中有效地集成Uploadify,以提供用户友好的文件上传体验。以下是对Uploadify批量上传实例...
JQuery上传插件Uploadify是一种流行的基于Flash的文件上传组件,它与JQuery框架结合使用,提供了一个简便的方式来实现文件的上传功能,并带有上传进度条显示。在Web开发中,文件上传是一个常见的需求,使用JQuery ...
Uploadify是一款基于jQuery的插件,用于实现文件上传功能,它提供了丰富的自定义选项和友好的用户体验。在本文中,我们将深入探讨jQuery Uploadify插件的使用方法,包括基本配置、事件处理、样式定制以及与服务器端...
而Uploadify则是JQuery的一个插件,它提供了一种优雅的方式来实现文件的上传功能,包括单个文件上传和批量上传。本篇文章将详细介绍如何使用JQuery uploadify实现批量上传功能,并探讨其核心原理和相关配置。 首先...
UploadiFive是一款来自国外的、优秀的jQuery插件,主要功能是上传文件,支持文件的批量上传、拖拽上传等,是一个易集成的多文件上传解决方案。 其前身Uploadify在很多项目中已被广泛之用,但是Uploadify需要Flash的...
Uploadify是一款广泛使用的JavaScript上传插件,它基于jQuery库,为用户提供了一种高效、美观的文件上传解决方案。这个“修改版”可能包含了作者或社区针对原版Uploadify所做的功能优化、错误修复或自定义功能。 1....
在Java环境中,我们经常需要将Uploadify与jar包结合使用,以便在Web应用中实现文件上传功能。本文将深入探讨Uploadify的jar包及其在Java环境中的使用实例。 首先,Uploadify jar包是该插件在服务器端处理文件上传的...
上传功能在我们的程序中是经常会用到的,而传统的http上传在... 那么今天我要给大家介绍额就是一款jQuery的无刷新上传插件 -Uploadify,他有免费版和收费版两种,免费版的是用Flash实现的,而收费版的是用html5实现的
jQuery Uploadify文件批量上传实例 自己对jQuery Uploadify插件稍作整理,样式不合适可以根据自己的需要修改; 可以实现多文件上传,同时显示上传进度条和百分比,上传完毕后将统计上传文件的总数量、文件总大小和...
1. **Uploadify插件介绍**:Uploadify是一个jQuery插件,它通过Flash和HTML5技术实现了异步文件上传,支持进度条显示、文件类型限制、上传前后的回调函数等功能,提高了用户体验。 2. **jQuery库**:jQuery简化了...
uploadify是一款流行的jQuery插件,广泛用于文件上传功能的实现。它能够让用户在网页上选择文件并进行上传,同时也支持进度显示、文件类型过滤、文件上传队列管理等功能。下面是使用uploadify插件时应注意的知识点:...
Uploadify是一款非常流行的jQuery插件,它为用户提供了简单、直观的文件上传体验,尤其适用于需要处理大量文件上传的场景。 首先,我们需要了解Uploadify的基本原理。Uploadify利用HTML5的File API和Flash技术,...
《JQuery Uploadify基于JSP的无刷新上传实例详解》 在现代Web开发中,用户交互体验至关重要,其中文件上传功能是不可或缺的一部分。传统的文件上传方式通常需要页面刷新,这在用户体验上存在明显的不足。JQuery ...