如何使用 JavaScript 添加到现有的 dataTransfer.files 对象?

2024-03-17

我正在创建一个拖放文件上传区域。当我一次上传多个文件时,它可以工作,但我需要它能够支持分多个阶段上传。我知道下面的问题是我每次都设置文件,但我无法找出每次调用该方法时将更多文件添加到 dFiles 的正确方法

    var dFiles;
    //var dFiles = []
    var holder = document.getElementById('holder');
    holder.ondrop = function (e) {
        e.preventDefault();
        dFiles = (e.dataTransfer.files);
        //dFiles.push(e.dataTransfer.files);
   }

我尝试将 dfiles 初始化为空数组并添加文件(上面已注释掉)。后来,当我读取文件数据时,这导致了数据类型不匹配错误

for (var i = 0; i < dFiles.length; i++) {
    reader = new FileReader();
    reader.readAsDataUrl(dFiles[i]); //error
}

e.dataTransfer.files is a 文件列表 https://developer.mozilla.org/en-US/docs/Web/API/FileList.

您必须将每个文件分别添加到dFiles:

var files = e.dataTransfer.files;

for (var i = 0, l = files.length; i < l; i++) {
    dFiles.push(files[i]);
}

或者ES6的方式:

dFiles.push(...e.dataTransfer.files);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JavaScript 添加到现有的 dataTransfer.files 对象? 的相关文章

随机推荐

  • lxml XMLSyntaxError:未找到命名空间默认前缀

    我正在使用 lxml 来读取我的 xml 文件 我正在使用如下代码 它在 lxml2 3 beta1 上工作得很好 但在 lxml2 3 上它给了我 zn xml 语法错误 如下所示 我浏览了两个版本的发行说明 但无法弄清楚是什么导致了此错
  • 如何生成如图所示的拼贴图像

    如何生成如下所示的拼贴图像 如果您能让我知道是否有任何在线工具或应用程序可以执行此操作 我将不胜感激 谢谢 使用ImageMagickmontage像这样让你的蒙太奇10张图像宽并且所有图像邻接在一起 之间没有空格 montage geom
  • 第二个下拉列表所选项目在 ASP.NET MVC 中不会更改

    我对 ASP NET MVC 的行为有点困惑 因为它在 POST 之后没有更改下拉列表的值 有人可以解释如何做到这一点 首先我有一个如下所示的模型 public class Test public int OneID get set pub
  • 非法动态引用

    jniPath val subProjectPath projectDependencies value map module gt jniPath in LocalProject module name value val path li
  • 如何在 FluentValidation 中使用 Reflection?

    我有一个场景 我想使用反射来使用 Fluent Validation 进行验证 像这样的事情 public class FooValidator AbstractValidator
  • 从 Java 列表生成 p:tabs

    我想从 Java 列表创建 Primefaces 选项卡 我测试了这段代码
  • 在 mysql 更新查询中查找受影响的字段

    我这里有一个复杂的问题 假设我的表中有 5 个字段 而我的一个用户在运行 mysql 更新查询的表单的帮助下仅更新了 2 个字段 那么有什么办法可以查出哪两个字段被改变了 好吧 我不确定这是否是最好的方法 但它会起作用 请注意 语法适用于
  • 将通用列表数组绑定到 GridView

    您好 我有一个返回 问题 数组的列表 我的问题是如何将其绑定到网格视图 当我尝试调用 Question Ordinal 时 我发现它在数据源中不存在 我正在使用以下代码 GridView1 DataSource myList GetQ Gr
  • 堆栈在缓存中吗?

    在现代计算机中 我知道当前代码区域位于高速缓存中 然而 在许多计算机语言实现中 本地 自动 变量将位于堆栈上 因此会对堆栈进行大量内存访问 在正常架构中 堆栈是否位于另一个缓存中 如果不是 则假设堆栈可以重新定位到 本地 即非常靠近当前代码
  • chrome 扩展:页面完成加载 javascript 后运行脚本

    当页面完成加载时 这根本不会触发 基本上 当我单击浏览器操作按钮时 它会触发它 并且在页面加载时 它将运行一个脚本 在我的background js中 var toggle false chrome browserAction onClic
  • 如何使用 JMeter 发送动态 URL 参数

    我想将 URL PATH 发送为 controller 1 1 controller 2 2 start 但是参数 2controller 2是动态的 如何发送该参数 使参数成为变量 controller 2 controller2 par
  • 使用 swift for Mac 应用程序获得管理权限

    我正在编写一个软件 需要经常以root权限运行命令 现在 我通过询问用户一次密码 保存密码 然后将该密码提供给NSAppleScript作为参数with administrator privileges 这显然对用户来说确实不安全 因为有人
  • 使用 Obj-C 的帖子发送 amp (&)

    我正在发送包含文本 数字和数据的帖子 数字和数据工作正常 但我在文本方面遇到问题 因为它可能包含与号 例如 page php text Hello World Space 现在我发现 被服务器接收到 但读起来就像一个新变量开始一样 所以它看
  • pyqtdeploy:无法检测到 MSVC2015 或 MSVC2017

    我第一次尝试 pyqtdeploy 遵循文档 https www riverbankcomputing com static Docs pyqtdeploy demo html 运行 build demo py 时出现以下错误 C User
  • 将phoneGap 与本机iOS 应用程序集成

    我正在尝试创建一个使用本机功能和phoneGap 框架组合的应用程序 本机应用程序有一个按钮 单击该按钮后 phoneGap ui 必须添加到视图中 有什么办法可以实现这一点吗 有相同的教程吗 是的 这是可能的 尽管您可能会让自己陷入一些头
  • 如何确定我是否在 Android Wear 中运行?

    我在 Android Studio 中有一个移动和穿戴模块 它们都使用 核心 代码库 在该核心代码中 我如何确定我的代码是否在 移动 模块的 穿戴 上运行 我应该使用屏幕尺寸吗 尽管这没有正式记录 据我所知 您可以通过调用以下任一方法来确定
  • 使用 pyautogui 输入 unicode 字符串

    我正在创建一个自动测试应用程序pyautogui库 我想用typewrite将文本输入到表单中的方法 但我的一些输入字符串中含有 unicode 字符 例如 N st 根据文件typewrite只能按单字符键 所以它只是忽略了 特点 您能建
  • 使用 EC2 + Rails + Nginx + Capistrano 重新启动时 Puma 重新启动失败

    我已成功使用 capistrano 将我的 Rails 应用程序部署到 Ubuntu EC2 部署时一切都运行良好 Rails 应用程序名称是 deseov12 我的问题是 Puma 不会在启动时启动 这是必要的 因为生产 EC2 实例将根
  • 如何为其他类成员函数编写模板包装方法?

    我尝试为具有不同参数的不同函数创建一个模板化包装器 设置是一个类A基本实现有两种方法foo and bar 另一堂课B应包装这些方法并添加新功能 以下链接中的解决方案对于非类函数非常有效 c 11 模板化包装函数 https stackov
  • 如何使用 JavaScript 添加到现有的 dataTransfer.files 对象?

    我正在创建一个拖放文件上传区域 当我一次上传多个文件时 它可以工作 但我需要它能够支持分多个阶段上传 我知道下面的问题是我每次都设置文件 但我无法找出每次调用该方法时将更多文件添加到 dFiles 的正确方法 var dFiles var