使用 jquery fileupload basic 以编程方式删除文件

2024-02-08

我使用blueimp文件上传插件(基础版)来实现多文件上传。我正在尝试实现允许用户删除排队上传文件的功能。我无法弄清楚如何正确访问文件数组。每次add回调中,索引为0,文件数组长度为1(仅包含用户点击删除的文件)。我正在为排队到 div 的每个文件添加一个链接,该链接是可单击的,并且如果单击则应删除该文件。

我的想法是只创建一个带有文件索引的删除链接并将其从数组中删除,但由于上述问题,索引永远不正确。我也尝试过按文件名,但“on”回调中的文件名始终是选择上传的第一个文件 - 我必须弄清楚一些闭包范围。

如何以编程方式从上传队列中删除文件?

HTML:

<div id="fileBrowserWrapper">
    <form id="myForm" action="#" method="post" enctype="multipart/form-data">
        <input id="uploadDocBrowse" type="file" name="files[]" multiple/>                                                    
    </form>
</div>
<div id="inputFilesBox"></div>
<div id="uploadFilesBox"></div>

文件上传 JavaScript:

$('#myForm').fileupload({
    url: "/SomeHandler",
    dataType: 'html',
    autoUpload: false,
    singleFileUploads: false,
    replaceFileInput: false,
    add: function (e, data) {
        console.log("Number of files: " + data.files.length);

        $.each(data.files, function (index, file) {                                       
            $('#uploadFilesBox').append("<div class='uploadBox' id='fileDiv_" + file.name + "'><div class='leftEle'><a href='#' id='link_" + index + "' class='removeFile'>Remove</a></div><div class='midEle'>" + file.name + "</div></div>")
            .on('click', { filename: file.name, files: data.files }, function(event) {                            
                var uploadFilesBox = $("#uploadFilesBox");
                var remDiv = $("#fileDiv_" + event.data.filename);
                remDiv.remove();
                event.data.files.splice(0, 1);                              
            }
        });
    });

    data.context = $('#myButton')
    .click(function () {
        data.submit();
    });              
});

我解决了这个问题。这是带有描述的解决方案:

经过更多修改后,我找到了解决方案。关键是要记住我正在回电。因此,在删除功能的事件处理程序中,我只是将 data.files 数组归零,并且在该处理程序的提交中,仅当文件数组的长度大于 0 时才提交。我清理了事件处理程序函数,以便对眼睛来说更容易。 HTML 不变。

新的 JavaScript 处理代码:

 $('#myForm').fileupload({
            url: "/SomeUrl",
            dataType: 'html',            
            add: function (e, data) {
                $.each(data.files, function (index, file) {
                    var newFileDiv = $("<div class='uploadBox' id='fileDiv_" + file.name + "'><div class='leftEle'><a href='#' id='link_" + index + "' class='removeFile'>Remove</a></div><div class='midEle'>" + file.name + "</div></div>");
                    $('#uploadFilesBox').append(newFileDiv);

                    newFileDiv.find('a').on('click', { filename: file.name, files: data.files }, function (event) {                        
                        event.preventDefault();
                        var uploadFilesBox = $("#uploadFilesBox");
                        var remDiv = $(document.getElementById("fileDiv_" + event.data.filename));
                        remDiv.remove();                        
                        data.files.length = 0;    //zero out the files array                                     
                    });

                    data.context = newFileDiv;
                });

                $('#myButton')
                    .click(function () {
                        if (data.files.length > 0) {     //only submit if we have something to upload
                            data.submit();
                        }                                                    
                    });
            }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 jquery fileupload basic 以编程方式删除文件 的相关文章

随机推荐

  • 如何使用 Java 8 中的 LocalDateTime 计算两个日期之间的时间差?

    给出了很多答案 但我无法找到与我的情况兼容的答案 我还需要找出 8 小时的时间差异以及日期更改 例如 如果时间大于 8 小时 则不要执行某些操作 我们有没有什么方法可以达到同样的效果LocalDateTime在 Java 8 中 我尝试使用
  • 逻辑回归的搜索/预测时间复杂度是多少?

    我正在研究机器学习算法的时间复杂度 但我找不到预测新输入的逻辑回归的时间复杂度是多少 我读过 分类是 O c d c 类的数量 d 维度的数量 我知道对于线性回归 搜索 预测时间复杂度是 O d 您能否解释一下逻辑回归的搜索 预测时间复杂度
  • 将 Swagger JSON 转换为 RAML/YAML

    如何将 Swagger JSON 转换为 RAML YAML 并验证它 我不是在寻找一种编程方式 只是一次性转换 步骤如下 将 Swagger JSON 导出到驱动器上的文件中 此 JSON 应发布在您的服务器上的以下 URI swagge
  • 如何在多部分post请求中传递参数

    Servlet 代码 request getparameter fname I can t able to get value HTML代码 h3 File Upload h3 Select a file to upload br
  • 动态向 Neo4j 添加属性

    如何动态添加新属性到现有节点 在这里 我想将键和值动态分配给我的 chypher 查询 任何建议将不胜感激 您可以创建一个包含键值对的映射 并使用以下命令添加键值对 SET 示例1 添加属性 将删除其他属性 WITH name Kenny
  • ASP.NET MVC - 如果您不想将 .js 文件存储在 /Scripts 中,您将它们放在哪里?

    我有许多 js 文件 我希望将它们存储在与其视图相同的目录中 它们特定于视图 它只是为了将 javascript 与视图的 HTML 分开 但是 将它们添加到 Views ControllerName 目录不起作用 因为当向网络服务器发出
  • 使用 tkinter 调整大小的可滚动画布

    这是我的一个非常简单的 GUI 的代码 from Tkinter import class my gui Frame def init self main tk object self root Tk init Frame Frame in
  • OCaml 中的多态性 - 特别、参数、包含/子类型

    我在理解不同类型的多态性时遇到问题 特别是关于 OCaml 的多态性 我知道多态性允许 OCaml 中表示为 a 的多种类型 但我不明白不同类型的多态性是什么 如果有人能用相对低级的语言给我解释那就太棒了 临时 参数 包含 子类型 这是一个
  • 从 chrome devtools 扩展将调试器附加到工作线程

    我试图在我的 chrome devtools 扩展中拦截 ws 消息 这个问题 https stackoverflow com questions 31181651 inspecting websocket frames in an und
  • 在远程机器上加载数据INFILE

    如何使用本地文件在远程数据库 不同的机器 上执行以下命令 MYSQL PATH mysql u root h remote net files e LOAD DATA INFILE 1 INTO TABLE TABLE NAME FIELD
  • 将 HttpModule .Net 类库移植到 .Net Core Web API

    我正在将项目从 net Web 应用程序迁移到 Net core Web API 我正在 IIS 集成模式下使用 HTTP 模块 它是 net 框架类库 因此 考虑按原样移植到我的新核心应用程序 我将 web config 粘贴到我的新核心
  • 如何从 PHP 生成包含多个工作表的 Excel 文档?

    我想从 PHP 生成 MS Excel 文件 我知道人们可以做这样的事情 header Content type application vnd ms excel header Content Disposition attachment
  • Python 从网站上抓取 fb 评论

    我一直在尝试使用以下网站页面上的 Beautiful Soup 来抓取 Facebook 评论 import BeautifulSoup import urllib2 import re url http techcrunch com 20
  • 如何垂直拉伸 GridView 的单元格?

    我有这个网格视图
  • 使 HTML 正文背景图像透明

    我试图使我的背景图像透明 而页面的其余部分不透明 例如 在未褪色的 HTML 和 CSS 之上的褪色的背景图像 我有一个 HTML 页面 使用 div 将图像作为背景 以下是该页面的简化版本
  • Eclipse - 如何在不单击/更改主视图的情况下知道我正在哪个工作区工作

    目前在一个项目的 4 个不同分支上工作 对于每个分支 Eclipse 中都有一个不同的工作区 问题是 当我在不同的工作空间上打开多个 Eclipse 时 我很难区分它们并了解当前正在查看的工作空间 路径相同 因此所有分支上的窗口名称相同 我
  • 在MYSQL中复制表而不一次复制一行

    我想复制一个非常大的表 但我不想逐行复制它 有办法复制吗 例如 您可以 TRUNCATE 不删除行 行 所以我想知道是否有类似的东西可以复制整个表 更新 逐行插入非常痛苦 因为有 120M 行 无论如何要避免这种情况 MySQL 不再具有可
  • ggplot2:修复因子水平的颜色

    我正在开发一个更大的项目 我正在 ggplot2 中创建多个绘图 这些图涉及在几个不同的谨慎类别 例如 国家 物种 类型 中绘制几种不同的结果 我想完全修复离散类型到颜色的映射 以便 Type A 始终显示为红色 Type B 始终显示为蓝
  • ngrx 中的多个商店

    我正在使用 Angular 和 ngrx 编写一个企业级应用程序 目的是自始至终使用 Flux 和 ngrx 为了重用和可分离性 我们 至少 需要两个彼此不交互的状态存储 但我们确实需要两个存储同时处于活动状态 并且可能从相同的组件进行访问
  • 使用 jquery fileupload basic 以编程方式删除文件

    我使用blueimp文件上传插件 基础版 来实现多文件上传 我正在尝试实现允许用户删除排队上传文件的功能 我无法弄清楚如何正确访问文件数组 每次add回调中 索引为0 文件数组长度为1 仅包含用户点击删除的文件 我正在为排队到 div 的每