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 flash复制库类 Zero Clipboard
Jan 17 Javascript
基于jQuery的计算文本框字数的代码
Jun 06 Javascript
JavaScript中的undefined学习总结
Nov 30 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
Mar 16 Javascript
全系IE支持Bootstrap的解决方法
Oct 19 Javascript
JavaScript修改作用域外变量的方法
Mar 25 Javascript
在Node.js中使用Javascript Generators详解
May 05 Javascript
weebox弹出窗口不居中显示的解决方法
Nov 27 Javascript
vue cli使用绝对路径引用图片问题的解决
Dec 06 Javascript
Angular中sweetalert弹框的基本使用教程
Jul 22 Javascript
vue2配置scss的方法步骤
Jun 06 Javascript
vue实现拖拽交换位置
Apr 07 Vue.js
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截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
jQuery textarea的长度进行验证
2009/05/06 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
JS跨域请求的问题解析
2018/12/03 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
python assert的用处示例详解
2019/04/01 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
销售行业个人求职自荐信
2013/09/25 职场文书
租房合同协议书
2014/04/09 职场文书
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python