layui+thymeleaf+jquery实现多图片,多视频的上传、预览、放大、编辑功能

layui+thymeleaf+jquery实现多图片,多视频的上传、预览、放大、编辑功能


在这里插入图片描述

html:

<!--多图片上传-->
<div class="layui-row layui-col-space10"><div class="layui-form-item"><div class="layui-form-item layui-form-text"><label class="pm-form-label">多图片上传</label><div class="pm-input-block"><button type="button" class="layui-btn" id="ID-upload-demo-btn-photo"><i class="layui-icon layui-icon-upload"></i> 多图片上传</button><blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 11px;">预览图:<div class="layui-upload-list" id="upload-demo-preview-photo"><th:block th:if="${pmRepair!=null}"><th:block th:each="photo:${pmRepair.photoUrlList }"><div class="photo-item-box"><img class="video-item enlarge-img" th:src="${photo}"  alt="" style="width: 100px; height: 100px;"><div class="photo-item-del"  th:ids="${photo}">删除</div></div></th:block></th:block></div><!--放大镜--><div id="enlarge-div"><div id="inner-div"><img id="big-img" src=""/></div></div></blockquote></div></div></div>
</div><!--多视频上传-->
<div class="layui-row layui-col-space10"><div class="layui-form-item"><div class="layui-form-item layui-form-text"><label class="pm-form-label">多视频上传</label><div class="pm-input-block"><button type="button" class="layui-btn" id="ID-upload-demo-btn-video"><i class="layui-icon layui-icon-upload"></i> 多视频上传</button><blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 11px;">预览图:<div class="layui-upload-list" id="upload-demo-preview-video"><th:block th:if="${pmRepair!=null}"><th:block  th:each="video:${pmRepair.videoUrlList }"><div class="video-item-box"><video class="video-item" controls controlslist="" width="100px" height="100px" ><source th:src="${video}" type="video/mp4" /></video><div class="video-item-del"  th:ids="${video}">删除</div></div></th:block></th:block></div></blockquote></div></div></div>
</div>

js:

<script th:inline="javascript">// 多图片上传var photoUrlList=[[${pmRepair?.photoUrlList}]] ? [[${pmRepair?.photoUrlList}]] :[];// 多视频上传var videoUrlList=[[${pmRepair?.videoUrlList}]] ? [[${pmRepair?.videoUrlList}]] : [];// 多图片上传upload.render({elem: '#ID-upload-demo-btn-photo',url: '/comm/xxxxx', // 上传接口。multiple: true,accept:'images',before: function(obj){// 预读本地文件示例,不支持ie8obj.preview(function(index, file, result){$('#upload-demo-preview-photo').append(`<div class="photo-item-box"><img class="video-item enlarge-img" src="${result}" alt="" style="width: 100px; height: 100px;"><div class="photo-item-del"  ids="">删除</div></div>`)});},done: function(res){// 上传完毕photoUrlList.push(res.backurl)// 删除标签上重新赋予地址$(".photo-item-del").each(function (index,item){// 重新渲染地址到删除标签上for(let i=0;i<photoUrlList.length;i++){if(index==i){$(this).attr("ids",photoUrlList[i])}}})$(".enlarge-img").click(function () {$("#big-img").attr("src", $(this).attr("src"));//设置#big-img元素的src属性$("#enlarge-div").fadeIn("fast");//显示弹出层$("#enlarge-div").click(function () {//关闭弹出层$(this).fadeOut("fast");});})}});// 多视频上传upload.render({elem: '#ID-upload-demo-btn-video',url: '/comm/xxxxxxxx', // 上传接口。multiple: true,accept:'video',before: function(obj){// 预读本地文件示例,不支持ie8obj.preview(function(index, file, result){$('#upload-demo-preview-video').append(`<div class="video-item-box"><video class="video-item" controls width="100px" height="100px" ><source src="${result}" type="video/mp4" /></video><div class="video-item-del" ids="">删除</div></div>`)});},done: function(res){// 上传完毕videoUrlList.push(res.backurl)// 删除标签上重新赋予地址$(".video-item-del").each(function (index,item){// 重新渲染地址到删除标签上for(let i=0;i<videoUrlList.length;i++){if(index==i){$(this).attr("ids",videoUrlList[i])}}})}});// 图片删除$(document).on("click",".photo-item-del",function (){let ids=$(this).attr("ids");let index=photoUrlList.indexOf(ids);if(index!=-1){photoUrlList.splice(index,1)$(this).parent().remove()}})// 视频删除$(document).on("click",".video-item-del",function (){let ids=$(this).attr("ids");let index=videoUrlList.indexOf(ids);if(index!=-1){videoUrlList.splice(index,1)$(this).parent().remove()}})// 图片放大效果$(".enlarge-img").click(function () {$("#big-img").attr("src", $(this).attr("src"));//设置#big-img元素的src属性$("#enlarge-div").fadeIn("fast");//显示弹出层$("#enlarge-div").click(function () {//关闭弹出层$(this).fadeOut("fast");});})
</script>

css:

blockquote{margin-left: 60px;margin-right: 60px;
}.video-item-box,.photo-item-box{display: inline-block;width: 100px;height: 136px;text-align: center;border: 1px solid #eee;
}
.video-item-del,.photo-item-del{color: #0B7500;cursor: pointer;
}
.photo-item-del{margin-top: 6px;
}/*放大镜效果*/
#enlarge-div {position: fixed;top: 0;left: 0;background: rgba(0, 0, 0, 0.7);z-index: 2;width: 100%;height: 100%;display: none;
}#enlarge-div:hover {cursor: zoom-out;
}#enlarge-div #inner-div {width: 80%;height: 85%;margin: 0 auto;position: relative;top: 50%;transform: translateY(-50%);
}#enlarge-div #inner-div #big-img {/*width: 100%;*//*height: 100%;*/max-width: 100%;max-height: 100%;position: absolute;left: 50%;top: 50%;transform: translateY(-50%) translateX(-50%);
}.enlarge-img {cursor: zoom-in;transition: all 0.6s;border: 1px solid #eee;
}.enlarge-img:hover {transform: scale(1.4);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/384221.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis+Lua脚本+AOP+反射+自定义注解,打造我司内部基础架构限流组件

定义注解 Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD}) Documented public interface RedisLimitAnnotation {/*** 资源的key,唯一* 作用&#xff1a;不同的接口&#xff0c;不同的流量控制*/String key() default "";/*** 最多的访问限制次数…

Ubuntu 24 PXE Server bios+uefi 自动化部署esxi 6 7 8

pxe server 前言 PXE(Preboot eXecution Environment,预启动执行环境)是一种网络启动协议,允许计算机通过网络启动而不是使用本地硬盘。PXE服务器是实现这一功能的服务器,它提供了启动镜像和引导加载程序,使得客户端计算机可以通过网络启动并安装操作系统或运行其他软件…

cesium海洋到站提示

项目地址:Every Admin: 用于快速搭建后台管理和其他页面的项目,组件化开发,以及大屏展示. <template> <div class"topbox"> xx海洋管理 </div> <div class"selectbox"> <div class"title"> 航线列表 </div>…

ChatGPT的原理和成本

ChatGPT就是人机交互的一个底层系统&#xff0c;某种程度上可以类比于操作系统。在这个操作系统上&#xff0c;人与AI之间的交互用的是人的语言&#xff0c;不再是冷冰冰的机器语言&#xff0c;或者高级机器语言&#xff0c;当然&#xff0c;在未来的十来年内&#xff0c;机器语…

iPhone 17系列取消17 Plus版本?新一代苹果手机迎来新变革

随着科技的飞速发展&#xff0c;苹果公司再次准备刷新我们的期待&#xff0c;即将推出的iPhone 17系列携带着一系列令人兴奋的升级。今年&#xff0c;苹果打破了常规&#xff0c;将四款新机型带入市场——iPhone 17、17 Pro、17 Pro Max&#xff0c;以及一款全新的成员&#xf…

Hadoop、HDFS、MapReduce 大数据解决方案

本心、输入输出、结果 文章目录 Hadoop、HDFS、MapReduce 大数据解决方案前言HadoopHadoop 主要组件的Web UI端口和一些基本信息MapReduceMapReduce的核心思想MapReduce的工作流程MapReduce的优缺点Hadoop、HDFS、MapReduce 大数据解决方案 编辑 | 简简单单 Online zuozuo 地址…

GPT-4O 的实时语音对话功能在处理多语言客户时有哪些优势?

最强AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量 我瞄了一眼OpenAI春季发布会&#xff0c;这个发布会只有26分钟&#xff0c;你可以说它是一部科幻短片&#xff0c;也可以说它过于“夸夸其谈”&#xff01;关于…

Python文献调研(二)pycharm汉化与pyside6环境配置

一、pycharm汉化 1、点击File-settings &#xff08;如果是苹果电脑&#xff0c;打开左上角Pycharm-Preferences&#xff09; 2、点击plugins&#xff0c;在红框处输入Chinese后点击右侧的Marketplace&#xff0c;点击之后选中名为chinese&#xff08;Simplifiled&#xff0…

matplotlib 画图函数,最常用的

并排显示2个图片 import os import numpy as np from PIL import Image import matplotlib.pyplot as pltimage1 Image.open(a.png) image2 Image.open(a2.png)# Create a figure with two subplots (1 row, 2 columns) fig, axes plt.subplots(1, 2, figsize(10, 5))# Di…

友思特应用 | 硅片上的光影贴合:UV-LED曝光系统在晶圆边缘曝光中的高效应用

导读 晶圆边缘曝光是帮助减少晶圆涂布过程中多余的光刻胶对电子器件影响的重要步骤。友思特 ALE/1 和 ALE/3 UV-LED 高性能点光源&#xff0c;作为唯一可用于宽带晶圆边缘曝光的 i、h 和 g 线的 LED 解决方案&#xff0c;可高效实现WEE系统设计和曝光需求。 晶圆边缘曝光及处…

Android 15 之如何快速适配 16K Page Size

在此之前&#xff0c;我们通过 《Android 15 上 16K Page Size 为什么是最坑》 介绍了&#xff1a; 什么是16K Page Size为什么它对于 Android 很坑如何测试 如果你还没了解&#xff0c;建议先去了解下前文&#xff0c;然后本篇主要是提供适配的思路&#xff0c;因为这类适配…

0724,select +tcp 聊天室喵

目录 TCP协议喵 723__01&#xff1a;使用select实现一个基于UDP的一对一即时聊天程序。 001: 002: TIMEWAI OR BUG 721作业&#xff1a; 01&#xff1a;在一对一聊天的基础上&#xff0c;使用select实现一对多的回显服务。&#xff08;回显服务即接收到客户端发送的数…

懒人精灵安卓版纯本地离线文字识别插件

目的 懒人精灵是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务&#xff0c;节省大量人工操作的时间。懒人精灵也包含图色功能&#xff0c;识别屏幕上的图像&#xff0c;根据图像的变化自动执行相应的操作。本篇文章主要讲解下更优秀的…

【屏显MCU】多媒体接口总结

本文主要介绍【屏显MCU】的基本概念&#xff0c;用于开发过程中的理解 以下是图层叠加示例 【屏显MCU】多媒体接口总结 0. 个人简介 && 授权须知1. 三大引擎1.1 【显示引擎】Display Engine1.1.1 【UI】 图层的概念1.1.2 【Video】 图层的概念1.1.3 图层的 Blending 的…

JAVA笔记十七

十七、File-IO流 1.I/O的概念和java.io包 (1)输入&#xff1a;外部源—>程序 输出&#xff1a;程序—>输出目标 外部源、输出目标&#xff1a;磁盘文件、网络连接、内存缓存等 (2)java程序通过流执行I/O 流是一种抽象&#xff0c;可以用来产生信息或者使用信息&#…

jenkins自动化持续集成

一、持续集成优势 1.1 解放重复劳动 一次设置&#xff0c;多次复用。持续集成任务可以解放集成、测试、部署等重复性劳动&#xff0c;通过自动化任务能够显著提升集成频率。 1.2 更快解决问题 接入持续集成任务后&#xff0c;能够更早地感知变更后效果&#xff0c;及时进入…

【OpenCV C++20 学习笔记】基本图像容器——Mat

【OpenCV C20 学习笔记】基本图像容器——Mat 概述Mat内部结构引用计数机制颜色数据格式 显式创建Mat对象使用cv::Mat::Mat构造函数矩阵的数据项 使用数组进行初始化的构造函数cv::Mat::create函数MATLAB风格的初始化小型矩阵通过复制创建Mat对象 Mat对象的输出其他普通数据项的…

在图神经网络(GNN)上进行关系推理的新架构

开发能够学习推理的模型是一个众所周知的具有挑战性的问题&#xff0c;在这个领域中&#xff0c;使用图神经网络&#xff08;GNNs&#xff09;似乎是一个自然的选择。然而&#xff0c;以往关于使用GNNs进行推理的工作表明&#xff0c;当这些模型面对需要比训练时更长推理链的测…

某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]

文章目录 某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内…

SpringBoot 项目配置文件注释乱码的问题解决方案

一、问题描述 在项目的配置文件中&#xff0c;我们写了一些注释&#xff0c;如下所示&#xff1a; 但是再次打开注释会变成乱码&#xff0c;如下所示&#xff1a; 那么如何解决呢&#xff1f; 二、解决方案 1. 点击” File→Setting" 2. 搜索“File Encodings”, 将框…