layui实现图片虚拟路径上传,预览和删除的例子


Posted in Javascript onSeptember 25, 2019

效果如下所示:

layui实现图片虚拟路径上传,预览和删除的例子

前端:

<style type="text/css">
  #detailTbody tr:hover {
    background: #fff;
  }

  .layui-form-label {
    width: 110px;
  }

  .uploader-list {
    margin-left: -15px;
  }

  .uploader-list .info {
    position: relative;
    margin-top: -25px;
    background-color: black;
    color: white;
    filter: alpha(Opacity=80);
    -moz-opacity: 0.5;
    opacity: 0.5;
    width: 100px;
    height: 25px;
    text-align: center;
    display: none;
  }

  .uploader-list .handle {
    position: relative;
    background-color: #ff6a00;
    color: white;
    filter: alpha(Opacity=80);
    -moz-opacity: 0.5;
    width: 100px;
    text-align: right;
    height: 18px;
    margin-bottom: -18px;
    display: none;
  }

  .uploader-list .handle span {
    margin-right: 5px;
  }

  .uploader-list .handle span:hover {
    cursor: pointer;
  }

  .uploader-list .file-iteme {
    margin: 12px 0 0 15px;
    padding: 1px;
    float: left;
  }
</style>
    <div class="layui-upload">
        
      <button type="button" class="layui-btn layui-btn-warm" id="test2">单据上传(可上传多张)</button>
      <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;width: 88%">
          预览图:
          
        <div class="layui-upload-list uploader-list" style="overflow: auto;" id="uploader-list">
          <div id="" class="file-iteme" th:each="img :${data.orderVoucher}">
            <div class="handle"><i class="layui-icon" style="color: white;margin-right: 40%"></i>
            </div>
            <img th:src="${img}" alt="单据" width="100" height="100" onclick="showBig(this)">
          </div>
            
        </div>
      </blockquote>
    </div>

js:

layui.use(['form', 'layer', 'laydate', 'upload'], function () {
    $ = layui.jquery;
    var form = layui.form,
      layer = layui.layer,
      laydate = layui.laydate,
      upload = layui.upload;
    //多图片上传
    upload.render({
      elem: '#test2'
      , url: '/psi/order/uploadImg'
      , multiple: true
      , before: function (obj) {
        layer.msg('图片上传中...', {
          icon: 16,
          shade: 0.01,
          time: 0
        })
      }
      , done: function (res) {
        layer.close(layer.msg());//关闭上传提示窗口
        //上传完毕
        $('#uploader-list').append(
          '<div id="" class="file-iteme">' +
          '<div class="handle"> <i class="layui-icon" style="color: white ;margin-right: 40%"></i></div>' +
          '<img style="color: white;width: 100px;height: 100px" onclick="showBig(this)" src=' + res.url + ' >' +
          '</div>'
        );
      }
    });
  });

  $(document).on("mouseenter mouseleave", ".file-iteme", function (event) {
    if (event.type === "mouseenter") {
      //鼠标悬浮
      $(this).children(".info").fadeIn("fast");
      $(this).children(".handle").fadeIn("fast");
    } else if (event.type === "mouseleave") {
      //鼠标离开
      $(this).children(".info").hide();
      $(this).children(".handle").hide();
    }
  });
  $(document).on("click", ".file-iteme .handle", function(event){
    $(this).parent().remove();
  })
})
function showBig(obj) {
  var url = (obj.src);
  var index = layer.open({
    type: 2,
    content: url,
    area: ['100%', '100%'],
    title: "单据",
    maxmin: true,
    closeBtn: 1
  });
  layer.full(index);
}

controller层

@RequestMapping(value = "/uploadImg")
  @ResponseBody
  public  Map<String,Object> uploadImg(MultipartFile file,HttpServletRequest request){
     Map<String,Object> data = new HashMap<>();
     String url = "";
     if (!file.isEmpty()){
       url = FileUploadUtil.saveImage(file,"orderVoucher",request);
     }
     data.put("url",url);
     return data;
  }

FileUploadUtil类

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.Date;

public class FileUploadUtil {

  public static String fileUploadPathUrl="D:\\svnproject\\wechatprintingPicture";

  /**
   * 图片读取存放获取路径
   *
   * @param file   文件
   * @param fileName 文件存放的目录名
   * @return
   */
  public static String saveImage(MultipartFile file, String fileName, HttpServletRequest requestFileUploadUtil) {
    long timestamp = new Date().getTime();//获取时间戳
    String realPath = fileUploadPathUrl;//项目路径
    String newFileName = timestamp + "" + file.getOriginalFilename(); //file.getOriginalFilename()是获取原始图片的拓展名,newfileName新的文件名字
    String path = realPath + "/" + fileName;
    String newPath = path + "/" + newFileName;////图片存放的位置路径
    File filePath = new File(path + "/");
    if (!filePath.exists()) {
      filePath.mkdirs();
    }
    if (!file.isEmpty()) {
      BufferedOutputStream out = null;
      try {
        out = new BufferedOutputStream(
            new FileOutputStream(new File(newPath)));
        out.write(file.getBytes());
        out.flush();
        out.close();
      } catch (FileNotFoundException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    String url = requestFileUploadUtil.getScheme() + "://" + requestFileUploadUtil.getServerName() + ":" + requestFileUploadUtil.getServerPort() + requestFileUploadUtil.getContextPath() + "/" + fileName + "/" + newFileName;
    return url;
  }
}

yml虚拟路径配置

spring:
 resources:
  static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${web.uploadPath}

web:
 uploadPath: D:/svnproject/wechatprintingPicture

以上这篇layui实现图片虚拟路径上传,预览和删除的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中使用构造函数实现继承的代码
Aug 12 Javascript
读jQuery之十四 (触发事件核心方法)
Aug 23 Javascript
jQuery判断多个input file 都不能为空的例子
Jun 23 Javascript
JavaScript继承模式粗探
Jan 12 Javascript
使用BootStrap实现标签切换原理解析
Mar 14 Javascript
浅谈FastClick 填坑及源码解析
Mar 02 Javascript
详解处理Vue单页面应用SEO的另一种思路
Nov 09 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
Dec 03 Javascript
通过实例解析js简易模块加载器
Jun 17 Javascript
vue实现弹幕功能
Oct 25 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
Aug 22 Javascript
javascript实现京东快递单号的查询效果
Nov 30 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
Sep 25 #Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
Sep 25 #Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
Sep 25 #Javascript
vue+axios实现post文件下载
Sep 25 #Javascript
vue + axios get下载文件功能
Sep 25 #Javascript
layer.open组件获取弹出层页面变量、函数的实例
Sep 25 #Javascript
jquery中attr、prop、data区别与用法分析
Sep 25 #jQuery
You might like
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
一个原生的用户等级的进度条
2010/07/03 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
python自动格式化json文件的方法
2015/03/11 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
pandas object格式转float64格式的方法
2018/04/10 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
Python字符串的一些操作方法总结
2019/06/10 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
俄罗斯游戏商店:Buka
2020/03/01 全球购物
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
活动宣传策划方案
2014/05/23 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS