layui上传图片实现删除-layui上传图片demo

Image

layui上传图片实现删除-layui上传图片demo

在Web开发中,图片上传和删除是常见的功能需求。使用Layui框架可以轻松实现这一功能。本文将介绍如何使用Layui实现图片上传并提供删除功能,并提供多种实现思路。

解决方案概述

Layui 是一个前端UI框架,提供了丰富的组件和模块,包括文件上传模块。通过Layui的upload模块,我们可以轻松实现图片上传功能。为了实现图片删除功能,我们可以在上传后的图片旁边添加一个删除按钮,点击该按钮时触发删除操作。

使用Layui实现图片上传

首先,确保你已经引入了Layui的CSS和JS文件。如果还没有引入,可以在HTML文件的头部添加以下代码:

html
</p>



  
  <title>Layui上传图片示例</title>
  


  <div class="layui-upload">
    <button type="button" class="layui-btn" id="uploadBtn">上传图片</button>
    <div class="layui-upload-list">
      <img class="layui-upload-img" id="demo1" style="max-width: 300px">
      <p id="demoText"></p>
    </div>
  </div>

  
  
    layui.use('upload', function(){
      var upload = layui.upload;

      // 执行实例
      var uploadInst = upload.render({
        elem: '#uploadBtn' // 绑定元素
        ,url: '/upload' // 上传接口
        ,before: function(obj){
          // 预读本地文件示例,不支持ie8
          obj.preview(function(index, file, result){
            $('#demo1').attr('src', result); // 图片链接(base64)
          });
        }
        ,done: function(res){
          // 上传完毕回调
          if(res.code == 0){
            $('#demoText').html(''); // 清空提示信息
            // 在这里可以添加删除按钮
            $('#demo1').after('<button class="layui-btn layui-btn-danger" id="deleteBtn">删除</button>');
            $('#deleteBtn').click(function() {
              // 删除图片
              $.ajax({
                url: '/delete',
                type: 'POST',
                data: {filename: res.data.filename},
                success: function(response) {
                  if (response.code == 0) {
                    $('#demo1').attr('src', '');
                    $('#demoText').html('');
                    $('#deleteBtn').remove();
                  } else {
                    alert('删除失败');
                  }
                },
                error: function() {
                  alert('请求失败');
                }
              });
            });
          } else {
            $('#demoText').html(res.msg);
          }
        }
        ,error: function(){
          // 请求异常回调
          $('#demoText').html('上传失败');
        }
      });
    });
  



<p>

代码解析

  1. HTML部分

    • #uploadBtn:上传按钮。
    • #demo1:显示上传后的图片。
    • #demoText:显示上传状态或错误信息。
  2. JavaScript部分

    • 使用layui.use加载upload模块。
    • upload.render方法配置上传实例。
    • before方法用于预读本地文件并显示在页面上。
    • done方法在上传成功后执行,显示图片并添加删除按钮。
    • 删除按钮的点击事件触发删除操作,通过AJAX请求删除服务器上的图片。

多种实现思路

使用模态框确认删除

为了提高用户体验,可以在删除图片前弹出一个模态框确认用户是否真的要删除图片。以下是修改后的代码:

html</p>


  layui.use(['upload', 'layer'], function(){
    var upload = layui.upload;
    var layer = layui.layer;

    // 执行实例
    var uploadInst = upload.render({
      elem: '#uploadBtn' // 绑定元素
      ,url: '/upload' // 上传接口
      ,before: function(obj){
        // 预读本地文件示例,不支持ie8
        obj.preview(function(index, file, result){
          $('#demo1').attr('src', result); // 图片链接(base64)
        });
      }
      ,done: function(res){
        if(res.code == 0){
          $('#demoText').html(''); // 清空提示信息
          // 在这里可以添加删除按钮
          $('#demo1').after('<button class="layui-btn layui-btn-danger" id="deleteBtn">删除</button>');
          $('#deleteBtn').click(function() {
            layer.confirm('确定要删除这张图片吗?', function(index){
              // 删除图片
              $.ajax({
                url: '/delete',
                type: 'POST',
                data: {filename: res.data.filename},
                success: function(response) {
                  if (response.code == 0) {
                    $('#demo1').attr('src', '');
                    $('#demoText').html('');
                    $('#deleteBtn').remove();
                    layer.close(index);
                  } else {
                    layer.msg('删除失败');
                  }
                },
                error: function() {
                  layer.msg('请求失败');
                }
              });
            });
          });
        } else {
          $('#demoText').html(res.msg);
        }
      }
      ,error: function(){
        // 请求异常回调
        $('#demoText').html('上传失败');
      }
    });
  });


<p>

批量上传和删除

如果需要支持批量上传和删除图片,可以使用Layui的多文件上传功能,并在上传后的列表中添加删除按钮。以下是示例代码:

html
</p>



  
  <title>Layui批量上传图片示例</title>
  


  <div class="layui-upload">
    <button type="button" class="layui-btn" id="uploadBtn">批量上传图片</button>
    <div class="layui-upload-list">
      <table class="layui-table">
        <thead>
          <tr>
            <th>文件名</th>
            <th>操作</th>
          </tr>
        </thead>
        <tbody id="fileList"></tbody>
      </table>
    </div>
  </div>

  
  
    layui.use(['upload', 'layer'], function(){
      var upload = layui.upload;
      var layer = layui.layer;

      // 执行实例
      var uploadInst = upload.render({
        elem: '#uploadBtn' // 绑定元素
        ,url: '/upload' // 上传接口
        ,multiple: true // 允许选择多个文件
        ,accept: 'images' // 只允许上传图片
        ,done: function(res, index, upload){
          if(res.code == 0){
            var tr = '<tr id="upload-' + index + '">' +
                       '<td>' + res.data.filename + '</td>' +
                       '<td><button class="layui-btn layui-btn-danger">删除</button></td>' +
                     '</tr>';
            $('#fileList').append(tr);
          } else {
            layer.msg(res.msg);
          }
        }
        ,allDone: function(obj){
          layer.msg('所有文件上传完成');
        }
        ,error: function(){
          layer.msg('上传失败');
        }
      });

      function deleteFile(filename, index) {
        layer.confirm('确定要删除这张图片吗?', function(index){
          $.ajax({
            url: '/delete',
            type: 'POST',
            data: {filename: filename},
            success: function(response) {
              if (response.code == 0) {
                $('#upload-' + index).remove();
                layer.close(index);
              } else {
                layer.msg('删除失败');
              }
            },
            error: function() {
              layer.msg('请求失败');
            }
          });
        });
      }
    });
  



<p>

代码解析

  1. HTML部分

    • #uploadBtn:批量上传按钮。
    • #fileList:显示上传后的文件列表。
  2. JavaScript部分

    • multiple: true:允许选择多个文件。
    • done方法在每个文件上传成功后执行,显示文件名并添加删除按钮。
    • allDone方法在所有文件上传完成后执行,显示提示信息。
    • deleteFile函数处理删除操作,使用模态框确认删除。

通过以上几种实现思路,你可以根据实际需求选择最适合的方案来实现图片上传和删除功能。希望本文对你有所帮助!

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/68607.html<

(0)
运维的头像运维
上一篇2025-02-06 18:48
下一篇 2025-02-06 18:49

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注