jsp页面:
Created by IntelliJ IDEA.
User: asus
Date: 2020/9/22
Time: 16:39
To change this template use File | Settings | File Templates.
--%>
文件上传enctype="application/x-www-form-urlencoded" 默认情况
enctype="multipart/form-data" 表单提交 以二进制流的形式提交
--%>
文件1:
文件2:
下载文件
fileupload:
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;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.UUID;
@WebServlet("/fileUpload")
@MultipartConfig(maxFileSize = 50*1024*1024,maxRequestSize = 100*1024*1024)
// maxFileSize限制接收文件的大小 maxRequestSize 最大请求数据量
public class FileUpload extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/* //接收文件块 file1
Part part = req.getPart("file1");
//最终要把文件放在本地目录
String path="C:\\Users\\asus\\Desktop\\java2006班\\单词记忆";
File file = new File(path);
if(!file.exists()){//如果文件不存在,创建目录
//循环创建目录
file.mkdirs();
}
//将文件写在哪个路径
//part.getSubmittedFileName(); 获取文件名
//UUID.randomUUID() 每次获取都是不同的字符串
// File.separator 代表文件分隔符
part.write(path + File.separator + UUID.randomUUID().toString() + "-" + part.getSubmittedFileName());
resp.getWriter().println("ok");*/
String path="C:\\Users\\asus\\Desktop\\java2006班\\单词记忆";
File file = new File(path);
if(!file.exists()){//如果文件不存在,创建目录
//循环创建目录
file.mkdirs();
}
Collection parts = req.getParts();
for (Part part:parts){
part.write(path+ File.separator+ UUID.randomUUID().toString() +"-"+ part.getSubmittedFileName());
}
resp.getWriter().println("ok");
}
}
Download:
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
@WebServlet("/downLoadServlet")
public class DownLoadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String filename = req.getParameter("filename");
if(filename != null){
String path = "C:\\Users\\asus\\Desktop\\java2006班\\单词记忆";
//1.根据文件名 读取文件
FileInputStream inputStream = new FileInputStream(path + File.separator + filename);
//2.将读取到的文件返回给前端,
//前端收到响应以文件形式保存,并且制定保存的文件名
//URLEncoder.encode(filename,"utf-8");解决中文乱码问题
resp.setHeader("content-disposition","attachment;filename=" + URLEncoder.encode(filename,"utf-8"));
byte[] buff = new byte[1024*4];
// 返回的是真正读取的长度
// -1 代表读取完毕
// int length = inputStream.read(buff);
int length = 0;
while((length = inputStream.read(buff)) != -1){
// 将buff 中的数据写入到 servletOutputStream
// 0 代表从 buff 下标0开始度
// length 读多少 buff里面有多少字节,我们才读多少字节
resp.getOutputStream().write(buff,0,length);
}
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}