servlet上传图片,当前时间的毫秒值为图片名称

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代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/layui-v2.5.6/layui/css/layui.css">
    <script src="/layui-v2.5.6/layui/layui.js"></script>
</head>
<body>
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
    <legend>上传你的头像</legend>
</fieldset>

<div class="layui-upload">
    <button type="button" class="layui-btn" id="test1">上传图片</button>
    <button><a href="tbuserlist.html" name="">返回首页</a> </button>
    <div class="layui-upload-list">
        <img class="layui-upload-img" id="demo1" style="width: 300px;height: 200px">
        <p id="demoText"></p>
    </div>
    <div style="width: 95px;">
        <div class="layui-progress layui-progress-big" lay-showpercent="yes" lay-filter="demo">
            <div class="layui-progress-bar" lay-percent=""></div>
        </div>
    </div>

</div>

<a name="list-progress"> </a>
</body>
<script>
    layui.use(['upload', 'element', 'layer'], function(){
             var $ = layui.jquery
            ,upload = layui.upload
            ,element = layui.element
            ,layer = layui.layer;

        //常规使用 - 普通图片上传
        var uploadInst = upload.render({
            elem: '#test1'
            ,url: '/PicUoLoadServlet' //该地方的的servlet需要自己配置编写,不要照抄,关于servlet的方法就在上边,名字随自己喜好
            ,field:'userimg'
            ,before: function(obj){
                //预读本地文件示例,不支持ie8
                obj.preview(function(index, file, result){
                    $('#demo1').attr('src', result); //图片链接(base64)

                });

                element.progress('demo', '0%'); //进度条复位
                layer.msg('上传中', {icon: 16, time: 0});
            }
            ,done: function(res){
                //如果上传失败
                if(res.code > 0){
                    return layer.msg('上传失败');
                }
                //上传成功的一些操作
                //……
                $('#demoText').html(''); //置空上传失败的状态
            }
            ,error: function(){
                //演示失败状态,并实现重传
                var demoText = $('#demoText');
                demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
                demoText.find('.demo-reload').on('click', function(){
                    uploadInst.upload();
                });
            }
            //进度条
            ,progress: function(n, elem, e){
                element.progress('demo', n + '%'); //可配合 layui 进度条元素使用
                if(n == 100){
                    layer.msg('上传完毕', {icon: 1});
                }
            }
        });


    });
</script>

</html>

效果图(由于本人不会制作gif动态,所以效果图以静态图片显示):

配置文件/图片上传的layui代码可自行去layui官网复制使用,layui的官网网址:通用轮播 - 在线演示 - Layui (funadmin.com)z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值