diff --git a/homework6/.idea/MarsCodeWorkspaceAppSettings.xml b/homework6/.idea/MarsCodeWorkspaceAppSettings.xml
new file mode 100644
index 0000000..05ed8ba
--- /dev/null
+++ b/homework6/.idea/MarsCodeWorkspaceAppSettings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework6/.idea/encodings.xml b/homework6/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/homework6/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework6/.idea/misc.xml b/homework6/.idea/misc.xml
index 6ed36dd..132404b 100644
--- a/homework6/.idea/misc.xml
+++ b/homework6/.idea/misc.xml
@@ -1,4 +1,14 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework6/.idea/vcs.xml b/homework6/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/homework6/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework6/pom.xml b/homework6/pom.xml
index 19226ed..af9d20b 100644
--- a/homework6/pom.xml
+++ b/homework6/pom.xml
@@ -1,48 +1,75 @@
-
- 4.0.0
+ 4.0.0
- com.msksbr
- homework6
- 1.0-SNAPSHOT
- homework6
- war
+ com.msksbr
+ homework6
+ 1.0-SNAPSHOT
+ homework6
+ war
-
- UTF-8
- 1.8
- 1.8
- 5.10.2
-
+
+ UTF-8
+ 1.8
+ 1.8
+ 5.10.2
+
-
-
- javax.servlet
- javax.servlet-api
- 4.0.1
- provided
-
-
- org.junit.jupiter
- junit-jupiter-api
- ${junit.version}
- test
-
-
- org.junit.jupiter
- junit-jupiter-engine
- ${junit.version}
- test
-
+
+
+
+ commons-fileupload
+ commons-fileupload
+ 1.3.3
+
+
+
+ commons-io
+ commons-io
+ 2.7
+
+
+
+ javax.servlet.jsp.jstl
+ javax.servlet.jsp.jstl-api
+ 1.2.2
+
+
+
+ org.apache.taglibs
+ taglibs-standard-impl
+ 1.2.5
+ runtime
+
+
+ javax.servlet
+ javax.servlet-api
+ 4.0.1
+ provided
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ ${junit.version}
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ ${junit.version}
+ test
+
+
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
- 3.3.2
-
-
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.3.2
+
+
+
\ No newline at end of file
diff --git a/homework6/src/main/java/com/msksbr/homework6/fileupload/DownloadServlet.java b/homework6/src/main/java/com/msksbr/homework6/fileupload/DownloadServlet.java
new file mode 100644
index 0000000..84c73a5
--- /dev/null
+++ b/homework6/src/main/java/com/msksbr/homework6/fileupload/DownloadServlet.java
@@ -0,0 +1,45 @@
+package com.msksbr.homework6.fileupload;
+
+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.io.InputStream;
+import java.io.OutputStream;
+
+@WebServlet(name = "DownloadServlet", urlPatterns = "/DownloadServlet")
+public class DownloadServlet extends HttpServlet {
+ private static final long serialVersionUID = 1L;
+
+ public void doGet(HttpServletRequest request, HttpServletResponse
+ response) throws ServletException, IOException {
+ //设置ContentType字段值
+ response.setContentType("text/html;charset=utf-8");
+ //获取所要下载的文件名称
+ String filename = request.getParameter("filename");
+ //下载文件所在目录
+ String folder = "/upload/";
+ // 通知浏览器以下载的方式打开
+ response.addHeader("Content-Type", "application/octet-stream");
+ response.addHeader("Content-Disposition",
+ "attachment;filename=" + filename);
+ folder = folder + filename;
+ // 通过文件流读取文件
+ InputStream in = getServletContext().getResourceAsStream(folder);
+ // 获取response对象的输出流
+ OutputStream out = response.getOutputStream();
+ byte[] buffer = new byte[1024];
+ int len;
+ //循环取出流中的数据
+ while ((len = in.read(buffer)) != -1) {
+ out.write(buffer, 0, len);
+ }
+ }
+
+ public void doPost(HttpServletRequest request, HttpServletResponse
+ response) throws ServletException, IOException {
+ doGet(request, response);
+ }
+}
diff --git a/homework6/src/main/java/com/msksbr/homework6/fileupload/UploadServlet.java b/homework6/src/main/java/com/msksbr/homework6/fileupload/UploadServlet.java
new file mode 100644
index 0000000..a5e289d
--- /dev/null
+++ b/homework6/src/main/java/com/msksbr/homework6/fileupload/UploadServlet.java
@@ -0,0 +1,104 @@
+package com.msksbr.homework6.fileupload;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+
+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 java.io.*;
+import java.util.List;
+import java.util.UUID;
+
+@WebServlet(name = "UploadServlet", value = "/UploadServlet")
+@MultipartConfig
+public class UploadServlet extends HttpServlet {
+ private static final long serialVersionUID = 1L;
+
+ public void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ try {
+ //设置ContentType字段值
+ response.setContentType("text/html;charset=utf-8");
+ // 创建DiskFileItemFactory工厂对象
+ DiskFileItemFactory factory = new DiskFileItemFactory();
+ //设置文件缓存目录,如果该目录不存在则新创建一个
+ File f = new File("uploadTemp");
+ if (!f.exists()) {
+ f.mkdirs();
+ }
+ // 设置文件的缓存路径
+ factory.setRepository(f);
+ // 创建 ServletFileUpload对象
+ ServletFileUpload fileupload = new ServletFileUpload(factory);
+ //设置字符编码
+ fileupload.setHeaderEncoding("utf-8");
+ // 解析 request,得到上传文件的FileItem对象
+ List fileitems = fileupload.parseRequest(request);
+ //获取字符流
+ PrintWriter writer = response.getWriter();
+ // 遍历集合
+ for (FileItem fileitem : fileitems) {
+ // 判断是否为普通字段
+ if (fileitem.isFormField()) {
+ // 获得字段名和字段值
+ String name = fileitem.getFieldName();
+ if (name.equals("name")) {
+ //如果文件不为空,将其保存在value中
+ if (!fileitem.getString().equals("")) {
+ String value = fileitem.getString("utf-8");
+ writer.print("上传者:" + value + "
");
+ }
+ }
+ } else {
+ // 获取上传的文件名
+ String filename = fileitem.getName();
+ //处理上传文件
+ if (filename != null && !filename.equals("")) {
+ writer.print("上传的文件名称是:" + filename + "
");
+ // 截取出文件名
+ filename = filename.substring(filename.lastIndexOf("\\") + 1);
+ // 文件名需要唯一
+ filename = UUID.randomUUID() + "_" + filename;
+ // 在服务器创建同名文件
+ String webPath = "/upload/";
+ //将服务器中文件夹路径与文件名组合成完整的服务器端路径
+ String filepath = getServletContext()
+ .getRealPath(webPath + filename);
+ // 创建文件
+ File file = new File(filepath);
+ file.getParentFile().mkdirs();
+ file.createNewFile();
+ // 获得上传文件流
+ InputStream in = fileitem.getInputStream();
+ // 使用FileOutputStream打开服务器端的上传文件
+ FileOutputStream out = new FileOutputStream(file);
+ // 流的拷贝
+ byte[] buffer = new byte[1024];//每次读取1个字节
+ int len;
+ //开始读取上传文件的字节,并将其输出到服务端的上传文件输出流中
+ while ((len = in.read(buffer)) > 0)
+ out.write(buffer, 0, len);
+ // 关闭流
+ in.close();
+ out.close();
+ // 删除临时文件
+ fileitem.delete();
+ writer.print("上传文件成功!
");
+ }
+ }
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public void doPost(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ doGet(request, response);
+ }
+}
diff --git a/homework6/src/main/webapp/download.jsp b/homework6/src/main/webapp/download.jsp
new file mode 100644
index 0000000..7002186
--- /dev/null
+++ b/homework6/src/main/webapp/download.jsp
@@ -0,0 +1,11 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ 文件下载
+
+
+
+ 文件下载
+
+
diff --git a/homework6/src/main/webapp/form.jsp b/homework6/src/main/webapp/form.jsp
new file mode 100644
index 0000000..c6fdc84
--- /dev/null
+++ b/homework6/src/main/webapp/form.jsp
@@ -0,0 +1,22 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ Title
+
+
+
+
+
\ No newline at end of file