jsp页面代码
<form id="bb" name="myform" action="" method="post"
enctype="multipart/form-data">
<input id="aa" type="hidden" name="id" value="" />
<table width="800" border="0" cellpadding="0" cellspacing="0"
align="center" id="td1">
</table>
</form>
js代码
function readyok(id) {
var infoPath = $("#knowledgeinfo").val();//文件保存路劲:
d:a\b\d\d.rar
//alert(infoPath);
/*$("#bb").attr("action",
"/Examination2.0/upload_uploadfile_hwh.action?filename="+infoPath+"&id=" + id);*/
//tomcat的url地址不允许有"\"字符
$("#bb").attr("action",
"/Examination2.0/upload_uploadfile.action?id="+id);
if (infoPath == "") {
$("#errorInfo").html("请选择您要上传的文件!");
$("#errorInfo").attr("class", "error");
return false;
}
var fileInfo = $("#knowledgeinfo").val();
var filetype = fileInfo.substring(fileInfo.lastIndexOf(".") + 1);
if (filetype != "rar" && filetype != "zip" && filetype != "RAR"
&& filetype != "ZIP") {
$("#errorInfo").html("您上传的文件格式有误,请上传后缀名为.rar或.zip的文件!");
$("#errorInfo").attr("class", "error");
return false;
}
var fileName = fileInfo.substring(fileInfo.lastIndexOf("\\") + 1);
var reg = /^[a-zA-Z0-1][\w.]{1,30}$/;
if (!reg.test(fileName)) {
$("#errorInfo").html("您上传的文件的文件名有误,请将上传的文件的文件名改为英文!");
$("#errorInfo").attr("class", "error");
return false;
}
document.myform.submit();
}
action代码
package com.yc.webexam.actions;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.FileUploadException;
import org.apache.tomcat.util.http.fileupload.RequestContext;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
import org.springframework.context.annotation.Scope;
import com.opensymphony.xwork2.ActionSupport;
import com.yc.biz.ADailyTalkBiz;
@SuppressWarnings("serial")
@Scope("prototype")
public class UploadAction extends ActionSupport {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
@Resource(name = "aDailyTalkBiz")
private ADailyTalkBiz aDailyTalkBiz;
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
private HttpSession mysession = request.getSession();
public void setServletResponse(HttpServletResponse response) {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
this.response = response;
}
public void setServletRequest(HttpServletRequest request) {
try {
request.setCharacterEncoding("utf-8");
this.request = request;
this.mysession = this.request.getSession();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
// 封装上传文件域的属性
private File knowledgeinfo;
// 封装上传文件类型的属性
private String knowledgeinfoContentType;
// 封装上传文件名的属性
private String knowledgeinfoFileName;
// 接受依赖注入的属性
private String savePath;
/*public void uploadfile_hwh() throws FileUploadException{
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024*1024*80);
factory.setRepository(new File(request.getServletContext().getRealPath("WEB-INF/temp")));
//1.2获取上传文件的核心类
ServletFileUpload fileload = new ServletFileUpload(factory);
fileload.setHeaderEncoding("UTF-8");
fileload.setFileSizeMax(1024*1024*100);
fileload.setSizeMax(1024*1024*200);
List<FileItem> list = fileload.parseRequest((RequestContext) request);
for(FileItem item :list){
if(!item.isFormField()){//普通字段
String realname = item.getName();
System.out.println("realname======> "+realname);
}
}
}*/
public void uploadfile() {
String id = null; // 新技术编号
byte[] bt = null;
String fileName = null;
int result = 0;
id = request.getParameter("id");
FileOutputStream fos = null;
FileInputStream fis = null;
try {
// 建立文件输出流
String filetype = getKnowledgeinfoFileName().substring(getKnowledgeinfoFileName().lastIndexOf("."));
String filename = getKnowledgeinfoFileName().substring(getKnowledgeinfoFileName().lastIndexOf("\\") + 1,
getKnowledgeinfoFileName().lastIndexOf(".")) + sdf.format(new Date()) + filetype;
String path=getSavePath() ;
//获取Tomact根路劲 C:\Users\Administrator\Desktop\apache-tomcat-8.0.44\webapps
for(int i=0;i<2;i++){
path=path.substring(0,path.lastIndexOf("\\"));
System.out.println(path);
}
path=path+"\\"+"upload";
String file = path + "\\" + filename;
fos = new FileOutputStream(file);
// 建立文件上传流
//TODO
fis = new FileInputStream(getKnowledgeinfo());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fis = new FileInputStream(file);
bt = new byte[fis.available()];
fis.read(bt);
fis.close();
result = aDailyTalkBiz.uploadKnowledgeInfos(bt, Integer.parseInt(id), filename);
} catch (Exception e) {
e.printStackTrace();
} finally {
close(fos, fis);
}
}
/**
* 返回上传文件的保存位置
*
* @return
*/
public String getSavePath() throws Exception {
return ServletActionContext.getServletContext().getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public File getKnowledgeinfo() {
return knowledgeinfo;
}
public void setKnowledgeinfo(File knowledgeinfo) {
this.knowledgeinfo = knowledgeinfo;
}
public String getKnowledgeinfoContentType() {
return knowledgeinfoContentType;
}
public void setKnowledgeinfoContentType(String knowledgeinfoContentType) {
this.knowledgeinfoContentType = knowledgeinfoContentType;
}
public String getKnowledgeinfoFileName() {
return knowledgeinfoFileName;
}
public void setKnowledgeinfoFileName(String knowledgeinfoFileName) {
this.knowledgeinfoFileName = knowledgeinfoFileName;
}
private void close(FileOutputStream fos, FileInputStream fis) {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
System.out.println("FileInputStream关闭失败");
e.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
System.out.println("FileOutputStream关闭失败");
e.printStackTrace();
}
}
}
public void setaDailyTalkBiz(ADailyTalkBiz aDailyTalkBiz) {
this.aDailyTalkBiz = aDailyTalkBiz;
}
}