The simplest example of servlet to realize file upload and download

document dowload

Take the PDF file as an example, the file is under src:

package course.servlet;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

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


@WebServlet("/DownloadServlet")
public class DownloadServlet extends HttpServlet{

/**
 * 下载PDF文件
 */
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	//声明文档类型
	resp.setContentType("application/pdf");
	//1、读取服务器上的PDF文件
    InputStream in = DownloadServlet.class.getClassLoader().getResourceAsStream("/draw.pdf");
	//2、读取的同时 写入outputstream
	OutputStream out = resp.getOutputStream();
	writeByte(in, out);
}

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	System.out.println("跳转到了doGET");
	doPost(req, resp);
}

/**
 * 读取文件并输出
 */
public void writeByte(InputStream in, OutputStream out) throws IOException {
	int count = 0;
	byte[] b = new byte[1024];
	while ((count=in.read(b))!=-1) {
		out.write(b);
	}
	System.out.println("输入成功");
	
	in.close();
	out.close();
}

}

File Upload

Take a PDF file as an example, the upload path is an absolute path:

package course.servlet;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet("/UploadServlet")
@MultipartConfig
public class UploadServlet extends HttpServlet{

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	super.doGet(req, resp);
}

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	Part part = req.getPart("uploadPDF");
	String fileName = getFileName(part);
	writeByte(part, fileName);
}

private String getFileName(Part part) {
	String header = part.getHeader("Content-Disposition");
	String result = header.substring(header.indexOf("filename=\"") + 10, header.lastIndexOf("\""));
	return result;
}

private void writeByte(Part part, String fileName) throws IOException {
	InputStream inputStream = part.getInputStream();
	OutputStream outputStream = new FileOutputStream("D:\\WorkSpaces\\eclipse-workspace\\MyFirstWebProject\\WebContent\\WEB-INF\\" + fileName);
	writeByte(inputStream, outputStream);
}

private void writeByte(InputStream inputStream, OutputStream outputStream) throws IOException {
	byte[] b = new byte[1024];
	int count = 0;
	while((count=inputStream.read(b))!=-1) {
		outputStream.write(b);
	}
	inputStream.close();
	outputStream.close();
}
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324969579&siteId=291194637