1.利用SmartUpload和File实现文件的上传。
2.实现文件下载。
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>请选择文件</h1>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传" name="Submit">
<input type="reset" name="Submit2" value="重置">
</form>
</body>
</html>
Upload.java
package lib;
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;
import javax.servlet.Servlet;
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;
@WebServlet("/upload")
public class Upload extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 编码这里可以进行自行更改
// 判断文件是否上传
if (ServletFileUpload.isMultipartContent(req)){
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List list = null;
// 捕捉异常
try {
list = upload.parseRequest(req);//得到文件上传
}catch (FileUploadException e){
e.printStackTrace();
}
Iterator it = list.iterator(); //迭代器
while (it.hasNext()){
FileItem file = (FileItem) it.next();//强制转换
String name = null;
if (!file.isFormField()){ //忽略非上传的表单域
name = file.getName();
}
String address = "D:\\test" + "\\" +name;
File filesave = new File(address);
try {
file.write(filesave);
}catch (Exception e){
e.printStackTrace();
}
}
resp.sendRedirect("success.jsp");
}
}
}
success.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2024/5/29
Time: 9:01
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>
<h1>
Wow!!!!上传成功
</h1>
<a href="load.jsp?file=upload.txt">下载</a>
</body>
</html>
load.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String filename= request.getParameter("file");
response.setHeader("Content-Disposition","attachment;filename="+filename);
response.setContentType("application/msword");
RequestDispatcher rd = request.getRequestDispatcher("/"+filename);
rd.forward(request,response);
%>
</body>
</html>
Load.java
package lib;
import com.jspsmart.upload.File;
import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;
import javax.servlet.ServletConfig;
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;
@WebServlet("/load")
public class Load extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
SmartUpload smart = new SmartUpload();
ServletConfig config = this.getServletConfig();
smart.initialize(config,req,resp);
try {
smart.upload();
File file= smart.getFiles().getFile(0);
String filename = file.getFileName();
file.saveAs("D:\\" +filename,SmartUpload.SAVE_PHYSICAL);
}catch (SmartUploadException e){
e.printStackTrace();
}
resp.sendRedirect("success.jsp");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
}