文件的上传与下载
上传
Servlet3.0的上传改进
HttpServletRequest增加了对文件上传的支持
Part getPart(String name)通过名称获取文件上传域
Collection
表单属性enctype,数据表单编码方式
application/x-www-form0urlencoded
multipart/form-data
text/plain
java 代码
package action;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@MultipartConfig
public class uploadServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
String fileName=request.getParameter("name");
Part part=request.getPart("file");
out.println("上传文件的类型:"+part.getContentType()+"
");
out.println("上传文件的大小"+part.getSize()+"
");
Collection
headerNames=part.getHeaderNames();
for(String headerName:headerNames){
out.println(headerName+"-->"+part.getHeader(headerName)+"
");
}
// 这里 路径为绝对路径 / 表示 的是 webroot 的 根路径
part.write(getServletContext().getRealPath("/uploadFiles")+"/"+fileName);
}
}
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
My JSP 'index.jsp' starting page
web.xml
upload2 upload action.uploadServlet upload /uploadServlet index.jsp
运行方式及结果
struts2单文件上传
java代码
package action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UploadAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private String title;
private File upload;
private String uploadContentType;
private String uploadFileName;
private String savePath;
public String upload()throws Exception{
FileInputStream fis=new FileInputStream(getUpload());
FileOutputStream fos=new FileOutputStream(getSavePath()+"\\"+getUploadFileName());
byte[] buffer=new byte[1024];
int len=0;
while((len=fis.read(buffer))>0){
fos.write(buffer,0,len);
}
fos.close();
fis.close();
return SUCCESS;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getSavePath() {
// 返回 绝对路径
return ServletActionContext.getServletContext().getRealPath(savePath);
}