<%@ page language="java" import="java.util.*" pageEncoding="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></title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link href="uploadify/uploadify.css" rel="stylesheet" type="text/css" />
<script src="js/lib/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="uploadify/jquery.uploadify.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("#file_upload").uploadify({
//开启调试
'debug' : false,
//是否自动上传
'auto': false,
//是否允许同时上传多个文件
'multi': true,
//超时时间
'successTimeout': 99999,
//设置按钮上文字
'buttonText' : '浏览',
//附带值
'formData':{
'userid':'用户id',
'username':'用户名',
'rnd':'加密密文'
},
//浏览按钮的高度
height: 30,
//浏览按钮的宽度
width : 120,
//不执行默认的onSelect事件
'overrideEvents' : ['onDialogClose'],
//文件选择后的容器ID
'queueID':'queue',
//服务器端使用的文件对象的名称'upload'
'fileObjName':'upload',
//上传处理程序
swf : 'uploadify/uploadify.swf',
uploader : 'FileUpload?action=handleRequest',
//允许上传的文件后缀
'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',
//上传文件的大小限制
'fileSizeLimit':'3MB',
//上传数量
'queueSizeLimit' : 25,
//初始化执行方法
'onInit' : function(instance) {
alert('初始化执行方法 ' + instance.settings.queueID);
},
//每次更新上载的文件的进展
'onUploadProgress' : function(file, bytesUploaded, bytesTotal, totalBytesUploaded, totalBytesTotal) {
//有时候上传进度什么想自己个性化控制,可以利用这个方法
//使用方法见官方说明
},
//选择上传文件后调用
'onSelect' : function(file) {
},
//返回一个错误,选择文件的时候触发
'onSelectError':function(file, errorCode, errorMsg){
switch(errorCode) {
case -100: alert("上传的文件数量已经超出系统限制的"+$('#file_upload').uploadify('settings','queueSizeLimit')+"个文件!"); break;
case -110: alert("文件 ["+file.name+"] 大小超出系统限制的"+$('#file_upload').uploadify('settings','fileSizeLimit')+"大小!");break;
case -120: alert("文件 ["+file.name+"] 大小异常!"); break;
case -130: alert("文件 ["+file.name+"] 类型不正确!");break;
}
},
//检测FLASH失败调用
'onFallback':function(){
alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
},
//取消上传后弹出消息框
'onCancel' : function(file) {
alert('这个文件' + file.name + ' 被取消');
},
//上传到服务器,服务器返回相应信息到data里
'onUploadSuccess':function(file, data, response){
alert(data);
}
});
});
</script>
</head>
<body>
<form>
<div id="queue"></div>
<input id="file_upload" name="file_upload" type="file" multiple="true">
<a href="javascript:$('#file_upload').uploadify('upload','*')">上传文件</a>
<a href="javascript:$('#file_upload').uploadify('stop', '*')">停止上传</a>
<a href="javascript:$('#file_upload').uploadify('cancel')">取消上传</a>
</form>
</body>
</html>
/**
* @Title: MutiFileUpload.java
* @Description: 文件的长传和下载
* @author zhengbo
* @date 2012-11-29 下午3:59:53
* @Copyright: iMos事业部.
* @version V1.0
*/
package org.imos.manager.action;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
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;
/**
* @author zhengbo
* commons fileupload 包装类
*
*/
public class FileUpload extends BaseServlet {
/** *
* 对 request 进行处理
* @throws UnsupportedEncodingException
*/
public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, UnsupportedEncodingException {
List<Map<String, String>> vars = new ArrayList<Map<String, String>>();
Map<String, String> map = new HashMap<String, String>();
String uploadPath = request.getSession().getServletContext().getRealPath("/")+"//upload"; //设置上传文件保存路径
String tempuploadPath = request.getSession().getServletContext().getRealPath("/")+"//upload//buffer//"; //设置上传文件临时目录
File uploadFile = new File(uploadPath);
if (!uploadFile.exists()) {
uploadFile.mkdirs();
}
File tempPathFile = new File(tempuploadPath);
if (!tempPathFile.exists()) {
tempPathFile.mkdirs();
}
try{
//DiskFileItem工厂,主要用来设定上传文件的参数
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
factory.setRepository(tempPathFile);// 设置缓冲区目录
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(20971520); // 设置最大文件尺寸
List<FileItem> items = upload.parseRequest(request);// 得到所有的文件
Iterator<FileItem> i = items.iterator();
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
String fileName = fi.getName();
if (fileName != null) {
File fullFile = new File(fi.getName());
File savedFile = new File(uploadPath, fullFile.getName());
fi.write(savedFile);
//
map.put("FILENAME", fullFile.getName());
map.put("FILEPATH", "upload//"+fullFile.getName());
vars.add(map);
}
}
System.out.print("upload succeed");
} catch (Exception e) {
e.printStackTrace();
}
}
}