项目需要实现一个无刷新批量文件上传功能,仔细研究了下,发现JQuery 提供的Uploadify插件十分不错,不过官方的实例是基于php的,下面我用jsp+servlet简单实现了这个功能,废话少说,先看效果图:
1、初始化页面:
2、选择多个文件(可一次多选)后:
3、点击开始上传(上传完就自动消失)
效果就是上面那样,页面不刷新。下面上代码:
1、首先先到官网下载最新的zip压缩包http://www.uploadify.com
2、项目结构:
3、关键代码:
index.jsp
01
|
<%@
page language="java" contentType="text/html; charset=utf-8"%>
|
03
|
String
path = request.getContextPath();
|
04
|
String
basePath = request.getScheme() + "://"
|
05
|
+
request.getServerName() + ":" + request.getServerPort()
|
08
|
<!DOCTYPE
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
11
|
< base href="<%=basePath%>">
|
15
|
< link href = "css/default.css" rel = "stylesheet" type = "text/css" />
|
16
|
< link href = "css/uploadify.css" rel = "stylesheet" type = "text/css" />
|
17
|
< script type = "text/javascript" src = "scripts/jquery-1.4.2.min.js" ></ script >
|
18
|
< script type = "text/javascript" src = "scripts/swfobject.js" ></ script >
|
19
|
< script type = "text/javascript" src = "scripts/jquery.uploadify.v2.1.4.min.js" ></ script >
|
22
|
< script type = "text/javascript" >
|
23
|
$(document).ready(function()
{
|
24
|
$("#uploadify").uploadify({
|
25
|
'uploader'
: 'scripts/uploadify.swf',
|
26
|
'script'
: 'servlet/Upload',//后台处理的请求
|
27
|
'cancelImg'
: 'images/cancel.png',
|
28
|
'folder'
: 'uploads',//您想将文件保存到的路径
|
29
|
'queueID'
: 'fileQueue',//与下面的id对应
|
31
|
'fileDesc'
: 'rar文件或zip文件',
|
32
|
'fileExt'
: '*.rar;*.zip', //控制可上传文件的扩展名,启用本项时需同时声明fileDesc
|
36
|
'buttonText'
: 'BROWSE'
|
43
|
< div id = "fileQueue" ></ div >
|
44
|
< input type = "file" name = "uploadify" id = "uploadify" />
|
46
|
< a href = "javascript:jQuery('#uploadify').uploadifyUpload()" >开始上传</ a >
|
47
|
< a href = "javascript:jQuery('#uploadify').uploadifyClearQueue()" >取消所有上传</ a >
|
web.xml
01
|
<? xml version = "1.0" encoding = "UTF-8" ?>
|
05
|
xmlns = "http://java.sun.com/xml/ns/j2ee"
|
07
|
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
|
09
|
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
|
11
|
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
|
15
|
< servlet-name >upload</ servlet-name >
|
17
|
< servlet-class >com.xzit.upload.Upload</ servlet-class >
|
23
|
< servlet-name >upload</ servlet-name >
|
25
|
< url-pattern >/servlet/Upload</ url-pattern >
|
31
|
< welcome-file >index.jsp</ welcome-file >
|
Upload.java
001
|
package com.xzit.upload;
|
005
|
import java.io.IOException;
|
007
|
import java.util.Iterator;
|
009
|
import java.util.List;
|
011
|
import java.util.UUID;
|
015
|
import javax.servlet.ServletException;
|
017
|
import javax.servlet.http.HttpServlet;
|
019
|
import javax.servlet.http.HttpServletRequest;
|
021
|
import javax.servlet.http.HttpServletResponse;
|
025
|
import org.apache.commons.fileupload.FileItem;
|
027
|
import org.apache.commons.fileupload.FileUploadException;
|
029
|
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
|
031
|
import org.apache.commons.fileupload.servlet.ServletFileUpload;
|
035
|
@SuppressWarnings ( "serial" )
|
037
|
public class Upload extends HttpServlet
{
|
039
|
@SuppressWarnings ( "unchecked" )
|
041
|
public void doPost(HttpServletRequest
request, HttpServletResponse response)
|
043
|
throws ServletException,
IOException {
|
045
|
String
savePath = this .getServletConfig().getServletContext()
|
049
|
savePath
= savePath + "/uploads/" ;
|
051
|
File
f1 = new File(savePath);
|
053
|
System.out.println(savePath);
|
061
|
DiskFileItemFactory
fac = new DiskFileItemFactory();
|
063
|
ServletFileUpload
upload = new ServletFileUpload(fac);
|
065
|
upload.setHeaderEncoding( "utf-8" );
|
071
|
fileList
= upload.parseRequest(request);
|
073
|
} catch (FileUploadException
ex) {
|
079
|
Iterator<FileItem>
it = fileList.iterator();
|
085
|
while (it.hasNext())
{
|
087
|
FileItem
item = it.next();
|
089
|
if (!item.isFormField())
{
|
091
|
name
= item.getName();
|
093
|
long size
= item.getSize();
|
095
|
String
type = item.getContentType();
|
097
|
System.out.println(size
+ "
" +
type);
|
099
|
if (name
== null ||
name.trim().equals( "" ))
{
|
107
|
if (name.lastIndexOf( "." )
>= 0 )
{
|
109
|
extName
= name.substring(name.lastIndexOf( "." ));
|
119
|
name
= UUID.randomUUID().toString();
|
121
|
file
= new File(savePath
+ name + extName);
|
123
|
} while (file.exists());
|
125
|
File
saveFile = new File(savePath
+ name + extName);
|
129
|
item.write(saveFile);
|
131
|
} catch (Exception
e) {
|
141
|
response.getWriter().print(name
+ extName);
|
分享到:
相关推荐
NULL 博文链接:https://jackroomage.iteye.com/blog/1995669
HTML5 PHP jquery uploadify上传文件,带进度条,author:吕大豹。仿照uploadify写的,www.codesc.net已做过修正,本例的配置参数均与uploadify官网一致,参照官网的api就可以了,直接把文件夹上传到支持php的服务器...
基于Uploadify+jsp文件上传刷新,直接运行该程序就可以 了
jquery uploadify插件Demo
jquery uploadify 无刷新上传精简版 简单应用,同时可以预览。
JQuery uploadify 实现文件批量上传完整例子,所有js,和uploadify插件js 都放在这个例子中
jQuery Uploadify文件批量上传实例 自己对jQuery Uploadify插件稍作整理,样式不合适可以根据自己的需要修改; 可以实现多文件上传,同时显示上传进度条和百分比,上传完毕后将统计上传文件的总数量、文件总大小和...
jsp,servlet,jquey最新版的jquery uploadify多文件上传 采用最新 版本的jquery uploadify。 有注释。
基于uploadify的无刷新上传 带进度条,支持多文件上传
一直以来jquery uploadify上传插件都不支持中文,每次都用图片代替也没感觉什么,但是最近开发的项目中有些特殊要求,不得不使用中文,于是中文支持版就出来了,这个是基于uploadify 2.1.4版修改的,请朋友们给点力,我赚点...
jquery Uploadify jsp 官网例子中没有jsp 开始了解的人不知道怎么用jqueryUploadify可以看这个例子很简单
jQuery Uploadify + Apache Fileupload异步上传文件示例
jquery里uploadify的样例代码 文件上传
jquery uploadify实现批量上传
文件上传功能基于jquery uploadify+ajax+ashx+flash技术实现,功能庞大,并具有良好的移植性。其能够一次性选择多个文件上传,查看上传进度,控制文件上传类型和大小,限制上传数量,接受服务器反馈信息,为每一步...
Jquery Uploadify上传带进度条 可以用来上传大文件,代码精简易懂。
Jquery Uploadify使用参数详解
jquery uploadify java
Asp.net 上传 Jquery.Uploadify HTML控件+Jquery.Uploadify 支持一次上传多个文件
采用jquery.uploadify插件作为前台上传,服务台用c#异步处理