(webok项目中,up.jsp)
服务器运行,http://localhost:8080/up.jsp,会出现文件上传页面,上传文件
1 单文件上传
----------------------up.jsp------------------------------
<%--
Created by IntelliJ IDEA.
User: ATM
Date: 2020/1/3
Time: 15:06
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>
<h3>单文件上传</h3>
<%--请求方式必须为post,必须加一个属性--%>
<form action="upload" method="post" enctype="multipart/form-data">
图片:<input type="file" name="ufile"> <input type="submit" value="提交">
</form>
</body>
</html>
Upload.java
package org.example.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;
//加上注解,方便访问,第二个注解为上传文件必须加的注解
@WebServlet("/upload") @MultipartConfig
public class Upload extends HttpServlet {
// 这里用servlet方法来处理
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
---------------//解决乱码问题-----------------------------
req.setCharacterEncoding("utf-8");
--------------------------------------------------------
//这样拿,是拿了一个
Part part = req.getPart("ufile");
// System.out.println(part.getContentType());//文件类型
// System.out.println(part.getName());//表单名称
// System.out.println(part.getSize());//文件大小
// System.out.println(part.getSubmittedFileName());//真实文件名
// System.out.println(part);
//接文件,
// 设置路径 上传到服务器的根目录下的upload目录下,如果不存在,则直接创建此目录
String path = req.getServletContext().getRealPath("/upload");
System.out.println(path);//输出路径
File f = new File(path);
if (!f.exists()){
f.mkdirs();
}
//写在某一路径下,文件名还按以前的文件名
part.write(path + "/" + part.getSubmittedFileName());
}
}
//这段程序会将文件上传到这个目录下
D:\tomcat\webapps\ROOT\upload
2 多文件上传
修改过的up.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>单文件上传</h3>
<%--请求方式必须为post,必须加一个属性--%>
<form action="upload" method="post" enctype="multipart/form-data">
图片:<input type="file" name="ufile"> <input type="submit" value="提交">
</form>
<h3>多文件上传</h3>
<%--请求方式必须为post,必须加一个属性 multiple表示多的意思--%>
<form action="uploads" method="post" enctype="multipart/form-data">
图片:<input type="file" name="ufile" multiple> <input type="submit" value="提交">
</form>
</body>
</html>
Uploads.java
package org.example.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.util.Collection;
//加上注解,方便访问,第二个注解为上传文件必须加的注解
@WebServlet("/uploads") @MultipartConfig
public class Uploads extends HttpServlet {
// 这里用servlet方法来处理
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解决乱码问题
req.setCharacterEncoding("utf-8");
//接文件,
// 设置路径 上传到服务器的根目录下的uploads目录下,如果不存在,则直接创建此目录
String path = req.getServletContext().getRealPath("/uploads");
System.out.println(path);//输出路径
File f = new File(path);
if (!f.exists()){
f.mkdirs();
}
//写在某一路径下,文件名还按以前的文件名
Collection<Part> ps = req.getParts();
for (Part p : ps){
String n = p.getName();
if ("ufile".equals(n)){
String name = p.getSubmittedFileName();
// p.write(path + "/" + name);//这句是不修改原文件名
//修改文件名(计算机各种硬件id号+计算机时钟)
String newname = UUID.randomUUID().toString() + name.substring(name.lastIndexOf("."));
p.write(path + "/" + newname.toLowerCase());
}
}
}
}
//这段程序会将文件上传到这个目录下
D:\tomcat\webapps\ROOT\uploads
每次服务器关闭或者重启这两个文件夹都会消失,里面的数据也会自动删除
来源:CSDN
作者:*某年某月*
链接:https://blog.csdn.net/qq_42591018/article/details/103881849