实现文件的上传与下载
上传①
up.jsp
<%--
Created by IntelliJ IDEA.
User: 11952
Date: 2022/7/31
Time: 22:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form method="post" action="up.do" enctype="multipart/form-data">
<p>用户名:<input type="text" name="name"></p>
<p>地址:<input type="text" name="address"></p>
<p>选择文件:<input type="file" name="file"></p>
<p>
<input type="submit" value="上传">
</p>
</form>
</body>
</html>
UploadSverlet
package com.openlab.action;
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.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@WebServlet("/up.do")
public class UploadServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
String address = req.getParameter("address");
InputStream inputStream = req.getInputStream();
OutputStream outputStream = new FileOutputStream("E:/up.txt");
int i = -1;
while ((i = inputStream.read())!=-1){
outputStream.write(i);
}
outputStream.close();
inputStream.close();
}
}
上传②
package com.openlab.action;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
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.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@WebServlet("/up2.do")
public class UploadServlet2 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
boolean f = ServletFileUpload.isMultipartContent(req);
if (!f){
throw new RuntimeException("表单格式不正确");
}
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(factory);
fileUpload.setHeaderEncoding("UTF-8");
Map<String, List<FileItem>> map = fileUpload.parseParameterMap(req);
Iterator<Map.Entry<String,List<FileItem>>> iter = map.entrySet().iterator();
while(iter.hasNext()){
Map.Entry<String,List<FileItem>> entry = iter.next();
String key = entry.getKey();
List<FileItem> list = entry.getValue();
System.out.println(key+"----"+list);
for (FileItem fileItem:list){
boolean b = fileItem.isFormField();
if (b){
String value = fileItem.getString("UTF-8");
System.out.println(key+"-----"+value);
}
else {
String filename = fileItem.getName();
fileItem.write(new File("E://upload"+filename));
fileItem.delete();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
上传③
package com.openlab.action;
import com.jspsmart.upload.Request;
import com.jspsmart.upload.SmartUpload;
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.IOException;
import java.util.Arrays;
@WebServlet("/up3.do")
public class UploadServlet3 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
SmartUpload smartUpload = new SmartUpload();
smartUpload.initialize(this.getServletConfig(),req,resp);
try {
smartUpload.setCharset("UTF-8");
smartUpload.upload();
Request request = smartUpload.getRequest();
String name = request.getParameter("name");
String address = request.getParameter("address");
String[] inter = request.getParameterValues("inter");
String file =request.getParameter("file");
System.out.println(name+"---"+address+"---"+ Arrays.toString(inter)+"---"+file);
smartUpload.save("E:/upload/");
} catch (Exception e) {
e.printStackTrace();
}
resp.sendRedirect("filelist.do");
}
}
下载
down.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
Created by IntelliJ IDEA.
User: 11952
Date: 2022/7/31
Time: 23:14
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:forEach items="${fs}" var="file">
<p>
<a href="download.do?filename=${file.name}">${file.name}</a>
</p>
</c:forEach>
</body>
</html>
DownloadServlet
package com.openlab.action;
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.io.OutputStream;
import java.nio.charset.StandardCharsets;
@WebServlet("/download.do")
public class DownloadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String filename = req.getParameter("filename");
File file = new File("E://upload/"+filename);
String downname = new String(filename.getBytes("UTF-8"),"ISO-8859-1");
resp.setHeader("content-disposition","attachment;filename"+downname);
FileInputStream inputStream = new FileInputStream(file);
OutputStream outputStream = resp.getOutputStream();
byte[]bs =new byte[(int)file.length()];
inputStream.read(bs);
outputStream.write(bs);
outputStream.close();
inputStream.close();
}
}