基于jquery.uploadify.js上传的测试环境
话不多说,这个是我们老大让弄的一个上传测试环境,结合网上自己下载的东西,最终成型的一个能正常使用的测试服务;
web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 上传的servlet配置 -->
<servlet>
<servlet-name>uploadSerrvlet</servlet-name>
<servlet-class>test.UploadSerrvlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>uploadSerrvlet</servlet-name>
<url-pattern>/uploadSerrvlet</url-pattern>
</servlet-mapping>
<!-- 上传的servlet配置 -->
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>test.test</servlet-class>
</servlet>
<!-- 配置XSS过滤器 -->
<filter>
<filter-name>testfilter</filter-name>
<filter-class>test.testfilter</filter-class>
</filter>
<filter-mapping>
<filter-name>testfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
java代码
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
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;
public class UploadSerrvlet extends HttpServlet
{
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
request.setCharacterEncoding( "UTF-8" );
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
String path = request.getRealPath( "/upload" );// 获得上传文件存放的路径
System.out.println("path : " + path);
new java.io.File( path ).mkdir();
diskFileItemFactory.setRepository( new File( path ) );
diskFileItemFactory.setSizeThreshold( 1024*1024 );
ServletFileUpload upload = new ServletFileUpload(diskFileItemFactory);
try
{
@SuppressWarnings("unchecked")
List<FileItem> list = (List<FileItem>) upload.parseRequest( request );
for (FileItem item : list )
{
String name = item.getFieldName();
if ( item.isFormField() )
{
String value = item.getString();
System.out.println(name + "=" + value);
}
else
{
String value = item.getName(); //
int start = value.lastIndexOf( "\\" );//
String filename = value.substring( start+1 );//
File file = null;
do {
// 出来获取文件类型
start = filename.lastIndexOf( "." );
filename = filename.substring( 0, start )
+ UUID.randomUUID().toString()
+ filename.substring( start );
file = new File(path, filename);
} while (file.exists()); // 生成文件
item.write( file );//写文件
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
// -------------------
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
this.doPost(request, response);
}
public static void main(String[] args) {
System.out.println( "I am a serlvet to process upload!" );
}
}
前端页面
<html>
<head>
<title>UploadifyTest</title>
<script src="./js/jquery-1.9.1.js" type="text/javascript"></script>
<script src="./js/jquery.uploadify.min.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="./css/uploadify.css">
<script type="text/javascript">
var ctestupload = 1;
$(function() {
$("#testupload").uploadify({
debug : false,
swf : 'js/uploadify.swf', //swf文件路径
method : 'post', // 提交方式
uploader : 'uploadSerrvlet', // 服务器端处理该上传请求的程序(servlet, struts2-Action)
queueID : 'testuploadfileQueue', // 队列ID
fileObjName : 'uploadFile', // 后台获取上传文件的标记
fileSizeLimit : 10240, // 单文件大小限制为10M
queueSizeLimit : 40, // 队列最大长度为40
uploadLimit : ctestupload, // 允许上传的最大文件数量
auto : false, // 是否自动上传
multi : false, // 是否支持多文件上传
buttonText : '文件上传', // 钮文字
removeCompleted: false,
fileTypeExts : '*.*',
fileTypeDesc : '请择(*.*)',
overrideEvents : [ 'onSelectError', 'onDialogClose'],
onUploadSuccess: function(file,data,response)
{
$("#testupload").uploadify('settings','uploadLimit', ++ctestupload);
$("#2457422107627001").val('2460959969200003');
},
onSelectError : function(file, errorCode, errorMsg)
{
var message = "";
switch (errorCode)
{
case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
message += "每次最多上传1个文件";
break;
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
message += "文件大小超过" + this.settings.fileSizeLimit + "字节";
break;
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
message += "文件大小为0"
break;
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
message += "文件格式不正确,仅限 " + this.settings.fileTypeExts;
break;
default:
msgText += "错误代码:" + errorCode + "\n" + errorMsg;
break;
}
$.messager.alert('上传失败',message);
}
});
$('#testuploadClearButton').click
(
function()
{
$('#2457422107627001').val("");
$('#testupload').uploadify('cancel', '*');
}
);
})
</script>
</head>
<body>
<h1>Uploadify Demo</h1>
<input type="hidden" id="2457422107627001"/>
<input type="file" name="uploadify" id="testupload"/>
<div id="testuploadfileQueue"></div>
<a href="javascript:$('#testupload').uploadify('upload','*')" id="testuploadUploadButton">开始上传</a>
<a href="javascript:void(0)" class='easyui-linkbutton' id="testuploadClearButton">清空</a>
</body>
</html>