首先说下使用的框架和插件:

struts1.3 jQuery1.3 ajaxupload.3.2.js(一个JQuery的插件,实现Ajax上传的效果)

COS(O’relly的一个性能很棒的上传组件)

jsp页面:

<%@ page language="java"  pageEncoding="UTF-8"%>
<%@ include file="../../common/taglibs.jsp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="${basePath }/script/jquery.js"></script>
<script type="text/javascript" src="${basePath }/script/ajaxupload.3.2.js"></script>
<title>Ajax文件上传示例</title>
<style type="text/css">
#loading,ol{
font-size:14px;
display:none;
color:orange;
display:none;
}
ol{
display:block;
}
</style>
<script type="text/javascript">
$(function(){

new AjaxUpload("#fileButton",{
action:"${basePath}/file.do?method=upload",
autoSubmit:true,
name:"myfile",
onSubmit:function(file, extension){
if (extension && /^(pdf|jpg|png|jpeg|gif)$/.test(extension))
{
$("#loading").html('<img src="${basePath}/images/loading.gif">');
$("#loading").show();
$("#fileButton").attr("disabled","disabled");
}
else
{
$("#loading").html("你所选择的文件不受系统支持");
$("#loading").show();
return false;
}
},
onComplete:function(file, extension){
$("#loading").html("文件上传成功");
$("#loading").show();
$("#fileButton").removeAttr("disabled");
}
});


new Ajax_upload('#button3', {
action: '${basePath}/file.do?method=upload',
name: 'myfile',
autoSubmit:true,
onComplete : function(file, extension){
$('<li></li>').appendTo($('.files')).text(file);
}
});
});
</script>
</head>

<body>
<input type="button" value="请选择您的照片" id="fileButton"/>
<div id="loading"><img src="${basePath}/images/loading.gif"></div>
<hr/>

<form action="#" method="post">

<input id="button3" type="file" />
<p>上传成功的文件有:</p>
<ol class="files"></ol>
<p>
<input class="submit" type="submit" value="表单提交"/>
</p>

</form>

</body>
</html>
StrutsAction代码:
package com.kay.crm.web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.springframework.stereotype.Controller;

import com.kay.common.util.CosUtil;

@Controller("/file")
public class FileUploadAction extends DispatchAction {

public ActionForward upload(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {


String fileName = CosUtil.upload(request);
System.out.println(fileName);

return null;
}
}
Cos的工具类:
package com.kay.common.util;

import java.io.File;
import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;

import com.oreilly.servlet.MultipartRequest;

public class CosUtil {

@SuppressWarnings({ "deprecation", "unchecked" })
public static String upload(HttpServletRequest request) throws IOException
{
//存绝对路径
//String filePath = "C://upload";
//存相对路径
String filePath = request.getRealPath("/")+"upload";
File uploadPath = new File(filePath);
//检查文件夹是否存在 不存在 创建一个
if(!uploadPath.exists())
{
uploadPath.mkdir();
}
//文件最大容量 5M
int fileMaxSize = 5*1024*1024;

//文件名
String fileName = null;
//上传文件数
int fileCount = 0;
//重命名策略
RandomFileRenamePolicy rfrp=new RandomFileRenamePolicy();
//上传文件
MultipartRequest mulit = new MultipartRequest(request,filePath,fileMaxSize,"UTF-8",rfrp);

String userName = mulit.getParameter("userName");
System.out.println(userName);

Enumeration filesname = mulit.getFileNames();
while(filesname.hasMoreElements()){
String name = (String)filesname.nextElement();
fileName = mulit.getFilesystemName(name);
String contentType = mulit.getContentType(name);

if(fileName!=null){
fileCount++;
}
System.out.println("文件名:" + fileName);
System.out.println("文件类型: " + contentType);

}
System.out.println("共上传" + fileCount + "个文件!");

return fileName;
}
}
Cos上传组件用到的重命名策略类:
package com.kay.common.util;

import java.io.File;
import java.util.Date;

import com.oreilly.servlet.multipart.FileRenamePolicy;

public class RandomFileRenamePolicy implements FileRenamePolicy {

public File rename(File file) {
String body="";
String ext="";
Date date = new Date();
int pot=file.getName().lastIndexOf(".");
if(pot!=-1){
body= date.getTime() +"";
ext=file.getName().substring(pot);
}else{
body=(new Date()).getTime()+"";
ext="";
}
String newName=body+ext;
file=new File(file.getParent(),newName);
return file;

}

}

更多相关文章

  1. 如何在metro javascript和html中读取和写入现有的xml文件
  2. 使用jQuery和AJAX从JSON文件加载数据
  3. vim / vi / linux:正确缩进html文件
  4. html 引用文件编码为utf-8 的 js文件乱码问题
  5. CSS文件filemtime没有调用路径两次
  6. 当html从本地文件系统运行时,如何获取的内容?
  7. 如何使用fileupload.js上传多个文件?
  8. 关于读取HTML文件内容乱码
  9. 我想在html文件里插入一个for循环,应该如何写

随机推荐

  1. java 对称加密——密钥与加密后的数据存
  2. 基于james3.0 的邮件系统(struts2.3.2 +sp
  3. 如何在Java中递归解压缩文件?
  4. 试图改变Jtable java中行的颜色
  5. idea下Kotlin的扁平化集合flatMap
  6. 使加权图在JGraphT中工作
  7. 如何将动态参数传递给jquery函数
  8. android中java.net.Socket的默认超时值是
  9. 使用Java管理Azure(1):基础配置
  10. java中 16进制字符串 与普通字符串 与 by