servlet步骤:
1.复制layui中的文件上传代码
2.修改端口
layui提供的端口必须要替换掉,在idea中编写servlet,将编写的servlet接口存在到,layui下边的 url:""中
3.修改 field文本域的名称 必须要与后台servlet一直
4.早serv中使用req.getPart获取前端页面中的field的值
5.使用part.getHeader("Content-Disposition");获取头部信息
6.通过lastindexof 获取最后一个“=”的索引值,在使用substring()参数获取后缀名,在将想要修改的名字使用字符串拼接
7.创建File对象,判断创建的文件是否存在,不存在则创建
8.使用part.write(path);上传路径,如果有虚拟路径,则String imgUrl="img/"+fikeName;定义一个变量名,使用虚拟变量拼接获取到的文件名称
9.创建HashMap对象
10.使用writer输出数据,关流
servlet代码:
package com.xiexin.controller;
import com.alibaba.fastjson.JSONObject;
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.io.PrintWriter;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
@WebServlet(name = "PicUoLoadServlet",urlPatterns = "/PicUoLoadServlet")
@MultipartConfig
public class PicUoLoadServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//修正编码
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
System.out.println("开始上传图片");
Part part = request.getPart("userimg");//收取的不是参数,是文件
System.out.println("part"+part);
String header = part.getHeader("Content-Disposition");
//在编写文件上传时,可以刷新页面,获取Content-Disposition 这个参数很重要
System.out.println("header"+header);
int i = header.lastIndexOf("=");
String s = header.substring(i);
System.out.println("i = "+i);
//当前时间的毫秒值
Calendar calendar = Calendar.getInstance();
long time = calendar.getTimeInMillis();
System.out.println("time="+time);
//第一种方式截取图片名称
String fikeName = header.substring(i + 2, header.length() - 1);
System.out.println("fikeName"+fikeName);
//获取.jpg后缀名的位置 i1
int i1 = fikeName.lastIndexOf(".");
System.out.println("i1 = "+i1);
String houzui = fikeName.substring(i1, fikeName.length());
System.out.println("houzui"+houzui);
//拼接
String quanming = time + houzui;
System.out.println("quanming = "+ quanming);
//System.out.println("substring = "+s);
//图片存储位置的四种
//1.存在项目里
//2存在 服务器硬盘
//3 存在 阿里云/七牛云
//4 搭建nginx 服务器 fastDFS文件系统 存储照片文件
// String realPath = request.getServletContext().getRealPath("upload");
String realPath= "E:\img";
System.out.println("realPath = "+realPath);
File file = new File(realPath);
if (!file.exists()) {
//判断创建的文件是否存在
file.mkdirs();
}
String path = realPath+"\"+quanming;
System.out.println(path+"path");
//开始上传
part.write(path);
System.out.println("图片上传成功 path="+path);
String imgUrl="img/"+fikeName;
Map map=new HashMap<>();
map.put("code", 0);
map.put("msg", "上传成功");
map.put("data",imgUrl);
String s1 = JSONObject.toJSonString(map);
PrintWriter writer = response.getWriter();
writer.println(s1);
writer.close();
}
}
html代码:
Title
效果图(由于本人不会制作gif动态,所以效果图以静态图片显示):
配置文件/图片上传的layui代码可自行去layui官网复制使用,layui的官网网址:通用轮播 - 在线演示 - Layui (funadmin.com)z



