一、上传
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class Upload extends HttpServlet {
private static final long serialVersionUID = -2738873254241944233L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(); // 工厂
// 获取上传文件存放的 目录 , 无则创建
String path = "D:/servletUpload/";/* request.getRealPath( "/upload" ); */
new java.io.File(path).mkdirs();
diskFileItemFactory.setRepository(new File(path));
diskFileItemFactory.setSizeThreshold(1024 * 1024); // 设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室
ServletFileUpload upload = new ServletFileUpload(diskFileItemFactory);
try {
// 上传多个文件
List<FileItem> list = (List<FileItem>) upload.parseRequest(request);
for (FileItem item : list) {
String name = item.getFieldName(); // 表单中name值
// 字符串类 属性
String value = item.getName(); // 文件原名称
if(value.trim().equals("")){
continue;
}
int start = value.lastIndexOf("\\"); // 2,索引到最后一个反斜杠
String filename = value.substring(start + 1); // 截取(+1是去掉反斜杠)
File file = new File(path, filename);
item.write(file); // 写到磁盘
System.out.println("文件大小:" + item.getSize());
}
} catch (Exception e) {
e.printStackTrace();
}
response.getWriter().write("response 返回的内容");
}
}
二、下载
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
public class Download extends HttpServlet {
private static final long serialVersionUID = -1217157202858492834L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
JSONObject json = new JSONObject();
// 要下载的文件名
String downloadfile = new String(request.getParameter("downFile").getBytes("ISO-8859-1"), "UTF-8");
File file = new File("D:/servletUpload/" + downloadfile);
if(file.exists()){
long filesize = file.length(); // 文件的长度
// 设置输出格式
response.reset();
response.addHeader("content-type", "application/x-msdownload;");
response.addHeader("Content-Disposition", "attachment; filename=" + response.encodeURL(downloadfile));// 保存窗口中显示的保存文件名
response.addHeader("content-length", Long.toString(filesize));
if(filesize != 0){
// 向客户端写入文件
FileInputStream fin = new FileInputStream(file);
byte[] b = new byte[2048];
while ((fin.read(b)) > 0) {
response.getOutputStream().write(b);
}
fin.close();
}else{
json.put("result", "failture");
json.put("errorCode", "2");
json.put("errorMsg", "文件大小为0");
response.getWriter().write(json.toString());
}
}else{
json.put("result", "failture");
json.put("errorCode", "1");
json.put("errorMsg", "文件不存在");
response.getWriter().write(json.toString());
}
}
}
三、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>
<description>上传servlet</description>
<servlet-name>Upload</servlet-name>
<servlet-class>Upload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Upload</servlet-name>
<url-pattern>/Upload</url-pattern>
</servlet-mapping>
<servlet>
<description>下载servlet</description>
<servlet-name>Download</servlet-name>
<servlet-class>Download</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Download</servlet-name>
<url-pattern>/Download</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>