jsp+servlet上传与下载

来源:互联网 发布:模拟退火优化神经网络 编辑:程序博客网 时间:2024/05/16 00:41

一、上传

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>





0 0
原创粉丝点击