如何从输入类型文件多个中删除特定文件?

2023-11-24

我正在使用多个输入类型文件来更新一些图片。上传之前,页面会显示每张图片的缩影。我想为每张图片添加一个删除链接,当用户单击时,图片就会消失,文件也会从输入中删除。

我尝试使用下面的代码:

HTML:

<input id="midiasUpload" multiple="multiple" type="file" name="midias" accept="image/x-png,image/gif,image/jpeg" /> 
<div id="midiaDigital"></div>

JavaScript:

$(document).ready(function() {

$("#midiasUpload").on('change', function() {
    //Get count of selected files
    var countFiles = $(this)[0].files.length;
    var imgPath = $(this)[0].value;
    var extn = imgPath.substring(imgPath.lastIndexOf('.') + 1).toLowerCase();
    var image_holder = $("#midiaDigital");
    image_holder.empty();
    if (extn == "gif" || extn == "png" || extn == "jpg" || extn == "jpeg") {
      if (typeof(FileReader) != "undefined") {
        //loop for each file selected for uploaded.
        for (var i = 0; i < countFiles; i++) 
        {
          var reader = new FileReader();
          reader.onload = function(e) {
              $(image_holder).append('<div class="form-group row">' +
                                      '<div>' +
                                      '<div class="col-md-6">' +                              
                                      '<img src="' + e.target.result + '" class="thumb-image img-responsive">' +
                                      '<input type="text" class="form-control input-sm" name="midiaDigitals[' + i + '].legenda" placeholder="Digite a descrição da mídia digital"/>' + 
                                      '<a href="#" class="remove_field1">Remover</a>' + //add input box
                                      '</div>' +
                                      '</div>' +
                                      '</div>'); 


          }
          image_holder.show();
          reader.readAsDataURL($(this)[0].files[i]);
        }
      } else {
        alert("O browser não suporta upload de arquivos.");
      }
    } else {
      alert("Formato de arquivo inválido");
    }
  });

$(midiaDigital).on("click",".remove_field1", function(e){ //user click on remove text
    e.preventDefault(); $(this).parent('div').remove(); 
})

}); 

使用此代码,“预览”图片将与“删除”链接一起出现。当我单击“删除”时,预览图片被删除,但文件继续被选中。我应该怎么办?


您可以通过 jQuery 在一行中简单地完成此操作:$('#midiasUpload').val('');。它重置输入值。这是片段:

function select(el) {
  img = el;
}
var img;
var input;
$(document).ready(function() {
  $("#midiasUpload").on('change', function() {
    var countFiles = $(this)[0].files.length;
    input = $(this)[0];
    console.log('Input value after upload: ', input.value)
    var imgPath = input.value;
    img = imgPath;
    var extn = imgPath.substring(imgPath.lastIndexOf('.') + 1).toLowerCase();
    var image_holder = $("#midiaDigital");
    image_holder.empty();
    if (extn == "gif" || extn == "png" || extn == "jpg" || extn == "jpeg") {
      if (typeof(FileReader) != "undefined") {
        for (var i = 0; i < countFiles; i++) {
          var reader = new FileReader();
          reader.onload = function(e) {
            $(image_holder).append('<div class="form-group row">' +
                                   '<div>' +
                                   '<div class="col-md-6">' +                             
                                   '<img src="' + e.target.result + '" class="thumb-image img-responsive" onclick="select($(this))">' +
                                   '<input type="text" class="form-control input-sm" name="midiaDigitals[' + i + '].legenda" placeholder="Digite a descrição da mídia digital"/>' + 
                                   '<a href="#" class="remove_field1">Remover</a>' + //add input box
                                   '</div>' +
                                   '</div>' +
                                   '</div>'); 
          }
          image_holder.show();
          reader.readAsDataURL($(this)[0].files[i]);
        }
      } else {
        alert("O browser não suporta upload de arquivos.");
      }
    } else {
      alert("Formato de arquivo inválido");
    }
  });

  $(midiaDigital).on("click",".remove_field1", function(e){ //user click on remove text
    e.preventDefault(); $(this).parent('div').remove(); 
    img.val = '';
    input.value = null;
    console.log('Input value after remove: ', input.value)
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="midiasUpload" multiple="multiple" type="file" name="midias" accept="image/x-png,image/gif,image/jpeg" /> 
<div id="midiaDigital" style="margin-bottom: 100px;"></div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从输入类型文件多个中删除特定文件? 的相关文章

随机推荐

  • 什么时候调用临时的析构函数

    我想知道 C 03 和 C 11 何时调用临时的析构函数 假设我有以下情况 foo method foo f return foo void doSomething foo f method 假设我正在使用标志 fno elide cons
  • 如何以编程方式添加导航控制器?

    我使用下面的代码 但它没有加载 UIStoryboard storyboard UIStoryboard storyboardWithName Main bundle nil self mapViewController storyboar
  • 删除所有项目后组合框尺寸问题

    我的应用程序包含一个组合框 用户可以从中删除项目 当程序启动时 它会从配置文件中读取的字符串列表填充组合框 这是添加项目的代码 version list is an array of strings foreach string versi
  • 解释 Haskell 中的类型类

    我是一名 C Java 程序员 我在日常编程中碰巧使用的主要范例是 OOP 在某些线程中 我读到一条评论说 Type 类本质上比 OOP 更直观 有人可以用简单的语言解释类型类的概念 以便像我这样的 OOP 人员能够理解它吗 首先 我总是对
  • ExtJs手动触发Click事件,按钮参数与鼠标单击不同

    所以 我有一个登录控制器 你可以用鼠标单击登录或按 Enter 键 如下所示 Ext define My controller Login extend Ext app Controller init function applicatio
  • 使用节点将Token保存在本地存储中

    我正在使用智威汤逊 jsonwebtoken 5 4 0 与快递4和翡翠 我能够创建正确的令牌 但是如何在每次调用中传递此令牌 我必须在哪里存储这个令牌 在标头中还是在本地存储中 现在我将 CURL 与 Postman 一起使用 并在标头中
  • 有什么方法可以知道 Jersey @__Param fromString 处理程序中正在解析哪个参数?

    我正在使用的 API 决定接受 UUID 作为 Base32 编码字符串 而不是标准的十六进制 破折号分隔的格式UUID fromString 期望 这意味着我不能简单地写 QueryParam UUID myUuid作为方法参数 因为转换
  • 从多个位置创建脚本包

    假设我们的应用程序处于离线状态 即我们无法使用第 3 方 CDN 因此我们正在创建自己的 CDN 我想将所有供应商脚本托管在一个单独的 父级 Web 应用程序中 然后将它们包含在其他几个 MVC 应用程序的捆绑包中 e g http loc
  • 达到 MaximumFileSize 时的 log4net 滚动文件附加器文件名格式

    我们使用 log4net 滚动文件附加器 并且对日志文件有以下要求 每天开始时的新日志文件 文件名中包含日期 最大日志文件大小为 500KB 我们遇到的问题是当文件达到 500KB 时的文件命名策略 它们被重命名为 1后缀 这是有问题的 因
  • 以编程方式启用/禁用连接

    在 Windows 7 上 我可以通过网络连接管理器面板 在系统设置中 启用和禁用连接 我如何在 C 中以编程方式执行此操作 谢谢 您可以通过利用 WMI 和 Win32 NetworkAdapter WMI 类在 C 中实现此目的 Win
  • 为什么变异风格被弃用?

    0 13 和 0 14 中的文档都警告说变异样式已被弃用 但没有提及原因 不推荐在渲染之间重用和改变样式对象 如果我想对基于 css 类的动画无法处理的元素执行依赖于状态的动画 我该怎么办 每次都克隆对象 新反应 非常感谢帮助和建议 您可以
  • Python位置,显示距最近其他位置的距离

    我是数据框中的一个位置 位于经纬度列名称下方 我想在单独的数据框中显示距离最近火车站的经纬度有多远 例如 我有一个经纬度 37 814563 144 970267 并且我有一个其他地理空间点的列表如下 我想找到最近的点 然后找到这些点之间的
  • 悬停子元素时如何设置父元素的样式?

    我知道不存在CSS 父选择器 但是在没有这样的选择器的情况下悬停子元素时是否可以设置父元素的样式 举个例子 考虑一个删除按钮悬停时将突出显示即将删除的元素 div p Lorem ipsum p div
  • 为什么 SimpleXML 在使用时将我的数组更改为数组的第一个元素?

    这是我的代码 string lt lt
  • 使用 XSLT 创建带有嵌套粗体/斜体标签的 XSL-FO

    我正在创建 xslt 文件 它将我的 xml 转换为 xsl fo XML 是这样的
  • 如何自动配置 Eclipse?

    从事项目的团队往往需要 Eclipse 的通用配置 这包括通用配置和项目特定配置 例如 一般来说 每个人都可能希望共享缩进 某些插件的安装 例如 m2eclipse testng egit Spring 支持 此外 对于一个项目 您可能需要
  • 为需要另一个扩展的 Python 进行 C 扩展

    我有几个 Python 函数 可以用来让 Pygame 的游戏开发变得更容易 我将它们放在 Python 路径中名为 helper py 的文件中 这样我就可以从我制作的任何游戏中导入它们 我想 作为学习 Python 扩展的练习 将此模块
  • 使用纯云 Azure Active Directory 进行 SQL Azure 集成身份验证失败

    我已经创建了 Azure 租赁并配置了以下内容 Azure AD 具有 简单的自定义域名 少于 15 个字符 DNS 验证等一切都很好 用户和管理员组 两个组中的用户 VNET DNS 和 IP 地址 启用设备管理 启用域服务并连接到 VN
  • Twitter API 在 XAMPP 上返回 NULL

    我正在尝试调用 Twitter API 简而言之 我的问题与描述的相同here 我接到电话NULL on a var dump 结果 However cURL 工作正常 我已经包含了最新版本的twitter api php脚本和所有令牌 密
  • 如何从输入类型文件多个中删除特定文件?

    我正在使用多个输入类型文件来更新一些图片 上传之前 页面会显示每张图片的缩影 我想为每张图片添加一个删除链接 当用户单击时 图片就会消失 文件也会从输入中删除 我尝试使用下面的代码 HTML