JavaWeb之上传下载

【上传】

upload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

	<form action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data">
		<input type="text" name="username"><br>
		<input type="file" name="userfile"><br>
		<input type="submit" value="提交">   
		<input type="reset" value="重置">
	</form>

</body>
</html>

UploadServlet.java

package zh.fileupload.demo;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.UUID;

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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	
		// 解决post方式提交中文乱码问题
		request.setCharacterEncoding("utf-8");
		// 解决响应编码问题
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
		// 设置文件大小临界值,大于临界值就使用临时缓存目录
		String tempPath = this.getServletContext().getRealPath("/temp");
		DiskFileItemFactory fileFactory = new DiskFileItemFactory(10, new File(tempPath));
		ServletFileUpload fileUpload = new ServletFileUpload(fileFactory);
		//fileUpload.setSizeMax(long sizeMax);//设置允许上传的所有文件总大小,字节
		//fileUpload.setFileSizeMax(long fileSizeMax);// 设置单个上传文件大小,字节
		
		List<FileItem> fileItemList = null;
		try {
			// 解析表单上传数据
			fileItemList = fileUpload.parseRequest(request);
		} catch (FileUploadException e) {
			e.printStackTrace();
		}
		if (fileItemList != null) {
			for (FileItem fileItem : fileItemList) {
				if (fileItem.isFormField()) {
					// 普通表单字段
					String fieldName = fileItem.getFieldName();// 字段名称,name属性值
					String fieldValue = fileItem.getString();// 字段内容,用户填的内容
					out.print(fieldName + "=" + fieldValue);
					out.write("<br>");
				} else {
					// 文件表单字段
					String savePath = this.getServletContext().getRealPath("/upload");
					try {
						// 不同浏览器得到的文件名不一样,D:\a.txt 或 a.txt
						String fileName = fileItem.getName();// 文件名
						fileName = fileName.substring(fileName.indexOf("\\")+1);// a.txt
						// 解决保存文件重名问题
						fileItem.write(new File(savePath,UUID.randomUUID().toString()+"_"+fileName));
						out.write(fileName + " 文件上传成功");
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}
		}

	}

}

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">
	<display-name></display-name>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<servlet>
		<servlet-name>UploadServlet</servlet-name>
		<servlet-class>zh.fileupload.demo.UploadServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>UploadServlet</servlet-name>
		<url-pattern>/UploadServlet</url-pattern>
	</servlet-mapping>

</web-app>

访问:http://localhost:8080/JavaWeb2/upload.jsp




【下载】


download.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件下载</title>
</head>
<body>

	<a href="${pageContext.request.contextPath}/DownloadServlet">文件下载</a>

</body>
</html>

DownloadServlet.java

package zh.fileupload.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;

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

import org.apache.commons.io.IOUtils;

public class DownloadServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		response.setContentType("text/html;charset=utf-8");
		// 下载文件路径
		String filepath = this.getServletContext().getRealPath("/upload/小小的太阳.txt");
		File file= new File(filepath);
		// 设置两个响应头,使用URLEncoder解决下载文件名乱码问题
		response.addHeader("Content-Type", "application/octet-stream");
		response.addHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(file.getName(), "utf-8"));
		
		IOUtils.copy(new FileInputStream(file), response.getOutputStream());
		
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

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">
	<display-name></display-name>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<servlet>
		<servlet-name>DownloadServlet</servlet-name>
		<servlet-class>zh.fileupload.demo.DownloadServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>DownloadServlet</servlet-name>
		<url-pattern>/DownloadServlet</url-pattern>
	</servlet-mapping>

</web-app>

访问:http://localhost:8080/JavaWeb2/download.jsp


猜你喜欢

转载自blog.csdn.net/qq_41706150/article/details/80595936