JavaScript 中的文件切片会导致空 blob

2024-03-15

我正在实现一个基于浏览器的分块文件上传器。打开我正在使用的文件<input type="file" id="fileSelector" />和这段代码(简化):

$('#fileSelector').on('change', function () {
    _file = evt.target.files[0];
});

我将文件切成块,但没有将块读入内存(不明确)。

Problem:偶尔(对于小于 0.1% 的上传文件)从底层文件切下的块是空的。例如。在上传大文件期间一切顺利,然后在该文件调用的中间:

var _blob = _file.slice(chunk.start, chunk.end, _file.type);

结果是一个空切片(_blob.size是 0)。将此类 blob 发送到服务器 (.NET 4.6) 会导致Request.InputStream是空的。我正在发送二进制数据:

_xhr.setRequestHeader('content-type', 'application/octet-stream');
_xhr.send(_blob);

我还应该提到的是_file.slice再次产生相同的空斑点。我可以在 Chrome 57、Chrome 60(Win 和 Mac)、Mac Safari 10.1.1 和 Edge 15 中观察到这一点。其他浏览器也是可能的。

有什么问题吗?我正在考虑的事情:

  • 文件正在使用中
  • 文件/磁盘已损坏
  • 与此同时,该 blob 被 JavaScript 引擎 GCed - 如果是这种情况,如何确保它不被 GCed?
  • 浏览器错误(我发现了这个,但不确定它是否相关:https://bugs.chromium.org/p/chromium/issues/detail?id=167111 https://bugs.chromium.org/p/chromium/issues/detail?id=167111)

答案非常简单:这就是上传的文件消失(重命名、删除)时发生的情况。

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

JavaScript 中的文件切片会导致空 blob 的相关文章

随机推荐

  • 嗅探器找不到 DJANGO_SETTINGS_MODULE

    我正在尝试在开发过程中进行更改后自动重新运行测试 搜索了一下之后sniffer http pypi python org pypi sniffer看起来不错 但如果我运行它 我的测试会失败并出现以下错误 ERROR Failure Impo
  • 如何将“active”类添加到 wp_nav_menu() 当前菜单项(简单方法)

    我正在使用入门主题 Underscores 和 Bootstrap 创建自定义 Wordpress 主题 我想修改wp nav menu以便它分配当前菜单项 active类而不是默认类 current menu item 我需要这个才能使用
  • 事件侦听器在没有事件的情况下执行并循环遍历 HTML 集合

    我正在尝试编写一个循环来初始化 JavaScript 中的事件处理程序 我认为我做错了什么 因为我的调试功能在没有事件 点击 发生的情况下被激活 我想做的是这样的 var JS elements document getElementsBy
  • Ada T'Class 的基础知识

    虽然有点不好意思问这个问题 但我知道这是最好的 我已经使用 Ada 编程很多年了 并且几乎可以流利地理解该语言的每个部分 然而 我似乎始终无法完全理解 T Class 借用别人的话 有人可以 像我五岁一样解释一下吗 编辑 我买它只是为了拥有
  • 如何在 while 循环中使用 .nextInt() 和 hasNextInt()

    所以我希望我的程序读取一个输入 其中一行中有一些整数 例如 1 1 2 然后它应该单独读取每个整数并将其打印在新行中 程序必须读取的整数数量没有提前给出 所以我想做的是使用 while 循环 该循环在没有更多整数可供读取后结束 这是我写的代
  • 如何迭代计算这个序列?

    我想迭代计算这个序列 A 0 j j 1 A i 0 A i 1 0 A i j A i 1 A i j 1 这是我的尝试 public function calculsuite1Action i j A array for k 0 k l
  • SwiftUI 中的内容拥抱优先行为

    我有一个List由单元格组成 每个单元格包含一个图像和一列文本 我希望以特定的方式布局 左图 占宽度的四分之一 其余空间留给文本 左对齐 这是我得到的代码 struct TestCell View let model ModelStruct
  • 我应该使用 request.POST 或 form.cleaned_data 中的文本

    这听起来像是一个微不足道的问题 但这对我来说是一场战斗 对于表单 然后点击提交 如果使用form cleaned data访问表单数据 或查找request POST 人们通常做的唯一一件事request POST就是查找提交按钮 但如果我
  • 如何在 SwiftUI 中禁用 ScrollView 弹跳

    Any Modifier可用于阻止反弹ScrollView in swiftUI struct RoomDetailsView View var body some View ScrollView showsIndicators false
  • 如何在GVim中从07增加到08?

    看起来像使用Ctrl A在 GVim 中不会从 07 增加到 08 因为前缀 0 被解释为八进制数 https stackoverflow com questions 13273741 why does incrementing with
  • android BottomNavigationView 中项目选定的颜色

    I refer this https medium com hitherejoe exploring the android design support library bottom navigation drawer 548de699e
  • 使用 Ionic 框架清除历史记录并在登录/注销时重新加载页面

    我是使用 Ionic 进行移动应用程序开发的新手 在登录和注销时 我需要重新加载页面 以便刷新数据 但是 state go mainPage 将用户带回视图而不重新加载 永远不会调用其背后的控制器 有没有办法清除历史记录并重新加载 Ioni
  • 尝试不同的函数,直到不抛出异常

    我有一些函数可以根据一组输入数据尝试各种方法来解决问题 如果该方法无法解决问题 则该函数将抛出异常 我需要按顺序尝试它们 直到没有抛出异常为止 我正在尝试找到一种方法来优雅地做到这一点 try answer method1 x y z ex
  • Google Data API - 两条腿的身份验证令牌重用

    我正在为 Google Contact Data API 使用两条腿的 OAuth 并在每个请求上生成令牌 是否可取或者我应该存储令牌以便下次重复使用吗 另外 如何检测陈旧的令牌 我正在使用Python 和 Gdata Python 客户端
  • JDBCPreparedStatement 始终返回 1 作为自动生成的键[重复]

    这个问题在这里已经有答案了 我有这段代码试图在数据库中插入一条记录 try Connection conn getConnection String sql INSERT INTO myTable userId content timest
  • BotFramework:“状态大小超出了配置的限制。”

    我正在开发一个机器人 每当我在表单流中 PostAsync 英雄卡 50 张英雄卡 时 最后它都会给我一条错误消息 状态大小超出了配置的限制 来自 Microsoft Bot Connector DLL 尝试 setPrivateConve
  • CSS 规则“.drop.a”应用于类“drag a”

    我有以下 HTML 标记 div class drag a div div class drop a div 我还有以下 CSS 规则 该规则仅适用于我的第二个 div drop a background color red 这工作正常 除
  • 截断存储过程中的表

    当我在 Oracle shell 中运行以下命令时 它工作正常 truncate table table name 但是当我尝试将其放入存储过程时 CREATE OR REPLACE PROCEDURE test IS BEGIN trun
  • Cypress 与 NextJS SSR - 使用 Axios 拦截 RESTful API

    我正在尝试在我的 SSR next js 应用程序上使用 cypress 和固定装置编写一些测试 该应用程序使用 Axios 连接到 RESTful API 但我在拦截 RESTful API 时遇到了麻烦cy intercept 因为 c
  • JavaScript 中的文件切片会导致空 blob

    我正在实现一个基于浏览器的分块文件上传器 打开我正在使用的文件