实现文件的上传与下载
上传的三种方法
package JDBC.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("/up1.do")
public class Upload1Servlet 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("D:/up.txt");
int i = -1;
while ((i = inputStream.read()) != -1) {
outputStream.write(i);
}
outputStream.close();
inputStream.close();
}
}
package JDBC.action;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.FileUploadException;
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 Upload2Servlet 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();
factory.setRepository(new File("D:/files"));
ServletFileUpload fileUpload = new ServletFileUpload(factory);
fileUpload.setHeaderEncoding("UTF-8");
Map<String, List<FileItem>> map = fileUpload.parseParameterMap(req);
Iterator<Map.Entry<String, List<FileItem>>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, List<FileItem>> entry = iterator.next();
String key = entry.getKey();
List<FileItem> list = entry.getValue();
for (FileItem fileItem:list) {
boolean b = fileItem.isFormField();
if (b) {
String value = fileItem.getString("UTF-8");
System.out.println(value);
} else {
String fileItemName = fileItem.getName();
fileItem.write(new File("D://upload//"+fileItemName));
fileItem.delete();
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package JDBC.action;
import com.jspsmart.upload.Request;
import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;
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 Upload3Servlet 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+"\t"+address+"\t"+ Arrays.toString(inter)+"\t"+file);
smartUpload.save("D:/upload");
} catch (SmartUploadException e) {
e.printStackTrace();
}
resp.sendRedirect("filelist.do");
}
}
文件的下载
package JDBC.action;
import javax.servlet.Filter;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
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("D:/upload/"+filename);
String downname = new String(filename.getBytes("UTF-8"),"ISO-8859-1");
resp.setHeader("content-disposition","attachment;filename="+downname);
FileInputStream fileInputStream = new FileInputStream(file);
OutputStream outputStream = resp.getOutputStream();
byte[] bytes = new byte[(int)file.length()];
fileInputStream.read(bytes);
outputStream.write(bytes);
outputStream.close();
fileInputStream.close();
}
}