单文件上传
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>会员上传资料</h3>
<form action="/upload.do" method="post" enctype="multipart/form-data">
姓名: <input type="text" name="uname"> <br>
文件: <input type="file" name="ufile"> <br>
<input type="submit" value="提交资料">
</form>
<h3>会员上传资料多文件</h3>
<form action="/uploads.do" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="uname"> <br>
文件:<input type="file" name="ufile" multiple><span>支持多文件上传</span> <br>
<input type="submit" value="提交资料">
</form>
</body>
</html>
Upload.java
package com.zit.servlet;
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.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/upload.do")
@MultipartConfig
public class Upload extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
String name = req.getParameter("uname");
Part file = req.getPart("ufile");
String path = req.getServletContext().getRealPath("/user/photo/");
System.out.println(path);
System.out.println(file.getSubmittedFileName());//文件名称
System.out.println(file.getSize());//文件大小
System.out.println(file.getName());//表单名称
File f = new File(path);
if (!f.exists()) {
f.mkdirs();
}
String nnn = file.getSubmittedFileName();
/* long max=1024*1024*10;
if(file.getSize()>max){
}*/
if (nnn.toLowerCase().endsWith(".jpg") || nnn.toLowerCase().endsWith("png")) {
//getSubmittedFileName() 返回的是上传的文件名称
//file.write(path+"/"+file.getSubmittedFileName());
//新名字:
String nn = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()) + nnn.substring(nnn.lastIndexOf("."));
file.write(path + "/" + nn);
req.setAttribute("file", file.getSubmittedFileName());
} else {
req.setAttribute("file", "文件上传失败,必须为jpg图像文件");
}
req.setAttribute("user", name);
req.getRequestDispatcher("/user/show.jsp").forward(req, resp);
}
}
show.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>上传完成</h3>
上传人:<h3>${user}</h3>
上传文件:<h3>${file}</h3>
</body>
</html>
完成。。。。。
***********************************************************************************************
多文件上传
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>会员上传资料</h3>
<form action="/upload.do" method="post" enctype="multipart/form-data">
姓名: <input type="text" name="uname"> <br>
文件: <input type="file" name="ufile"> <br>
<input type="submit" value="提交资料">
</form>
<h3>会员上传资料多文件</h3>
<form action="/uploads.do" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="uname"> <br>
文件:<input type="file" name="ufile" multiple><span>支持多文件上传</span> <br>
<input type="submit" value="提交资料">
</form>
</body>
</html>
Uploads.java
package com.zit.servlet;
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.text.SimpleDateFormat;
import java.util.*;
@WebServlet("/uploads.do")
@MultipartConfig
public class Uploads extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
String name = req.getParameter("uname");
System.out.println(name);
Collection<Part> col = req.getParts();
String path = req.getServletContext().getRealPath("/user/photo/");
File fi = new File(path);
if (!fi.exists()) {
fi.mkdirs();
}
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for (Part p : col) {
/* if(p.getSubmittedFileName()==null){
System.out.println("不是文件");
}
System.out.println(p.getSubmittedFileName());*/
if (p.getSubmittedFileName() != null) {
//上传的文件名
String fn = p.getSubmittedFileName();
//上传的文件大小
long size = p.getSize();
//System.out.println(fn);
p.write(path + "/" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + UUID.randomUUID().toString() + fn.substring(fn.lastIndexOf(".")));
Map<String, Object> map = new HashMap<String, Object>();
map.put("filename", fn);
map.put("filesize", size);
list.add(map);
}
}
req.setAttribute("user", name);
req.setAttribute("info", list);
req.getRequestDispatcher("/user/shows.jsp").forward(req, resp);
}
}
shows.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>上传完成</h3>
上传人:<h3>${user}</h3>
上传信息:
<c:forEach items="${info}" var="uu">
<h5>文件名:${uu.filename} 大小:${uu.filesize}字节</h5>
</c:forEach>
</body>
</html>