- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
注意:我不是在寻找任何替代品。我知道这可以通过 XMLHttpRequest 来完成。我也不关心浏览器支持。我只想了解新的/即将推出的标准。
我有一个 File对象,我可以像这样使用 PUT 上传它:
fetch(url, {
method: "PUT",
body: fileObject,
});
如何从中获取上传进度?
据我了解,获取选项的 body
可以是 ReadableStream .那么也许有一种方法可以将 File 对象包装到 ReadableStream 并从中获取进度状态?
例如。像这样
fetch(url, {
method: "PUT",
body: asReadableStream(fileObject, onProgress),
});
谢谢。
最佳答案
Chrome 开始支持流式上传 https://chromestatus.com/features/5274139738767360
这是一个使用拉流的演示,请求在准备好接受更多数据进行上传时调用该拉流
let uploaded = 0
let buf = new Uint8Array(1024 * 50)
let start = Date.now()
var rs = new ReadableStream({
pull(ctrl) {
uploaded += buf.byteLength
console.log('uploaded', uploaded)
crypto.getRandomValues(buf)
ctrl.enqueue(buf)
if ((start + 1000) < Date.now()) ctrl.close()
}
})
fetch('https://httpbin.org/post', {
method: 'POST',
body: rs,
duplex: 'half'
}).then(r => r.json()).then(console.log)
正如Kyle所说,目前还不支持ReadableStream上传。 https://github.com/whatwg/fetch/issues/95
即使有可能,我也不会尝试通过流监控上传进度,(也就是说,如果 FetchObserver 成为现实)现在没有人在做这件事。但是 Mozilla 提出了一个看起来像这样的提议。
/*
enum FetchState {
// Pending states
"requesting", "responding",
// Final states
"aborted", "errored", "complete"
};
*/
fetch(url, {
observe(observer) {
observer.onresponseprogress = e => console.log(e);
observer.onrequestprogress = e => console.log(e);
observer.onstatechange = n => console.log(observer.state)
}
)
我记得很久以前我用一些实验性的标志测试过它,但再也找不到演示了,我猜他们把它从 MDN 中删除了,因为它有自己的实现/建议。
将字节排队到可读流或标识流并不意味着您已将数据上传到服务器,它仅表示请求要求更多数据以可能填满存储桶
关于javascript - 如何使用 fetch() 和 WhatWG 流获取文件上传进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52422662/
在阅读 WHATWG 的 HTML5 - A technical specification for Web developers 时我看到很多引用资料,例如: Reflecting content
很容易看到从 W3C's HTML5 standard 的一个版本中发生了什么变化到下一个。我也可以看到 W3C 的 standards and drafts .但是 W3C 和 WHATWG 是不一
我正在尝试whatwg-fetch(用于Fetch API的polyfill),并且在执行POST时,会执行预检。但由于将 OPTIONS 发送到 REST 服务时未发送凭据,因此我收到了“未经授权”
我在 html 解析器的中途发现 html5 明确地 解析格式错误的 html 的经验法则。 (我过去常常从 DTD 中推断它们,叹息) 我喜欢这个事实,但我很清楚 html5 尚未最终确定(我也想知
我正在尝试将我的 Aurelia 项目从 beta 版本升级到 3 月版本。 我遇到的错误之一是: Cannot find name 'Request'. 谷歌搜索会在 GitHub 上显示此问题:h
有谁知道如何在 gatsby 中集成 whatwg-fetch fetch polyfill? 到目前为止,我所做的是 import 'whatwg-fetch'; 在 gatsby-browser.
注意:我不是在寻找任何替代品。我知道这可以通过 XMLHttpRequest 来完成。我也不关心浏览器支持。我只想了解新的/即将推出的标准。 我有一个 File对象,我可以像这样使用 PUT 上传它:
我正在尝试使用 Typescript 和 React 以及 webpack 制作一个简单的演示应用程序。当我尝试添加 whatgw-fetch 以从服务器检索数据时,在运行 webpack 时出现此错
位于 dt~whatwg-fetch 的 d.ts 文件包含以下声明。 declare class Headers { // other code ommited [Symbol.it
我正在摆弄 Node ,我正在尝试获取 URL 类的实例(因为那些方便的属性)。喜欢: const { URL } = require('url'); (...) http.createServer(
我是 ReactJS 的新手,我一直在阅读如何从 api 获取和发布数据。我见过这两个,但我不知道该用什么以及两者之间有什么区别?我读了它,但我不确定我会用什么。谢谢! react-fetch wha
我有一个小构建器类,它使用遗留 Node require('url') 从 URL 对象进行 url 操作,但是现在我正在尝试将其迁移以使用新的 WHATWG URL 类。 在我的构建器类中,我有一个
在 npm page对于 whatwg-fetch 它说: Importing will automatically polyfill window.fetch and related APIs: i
我正在使用 https://github.com/github/fetch在我的应用程序中,它工作正常,但我想用 Mocha 和 babel 测试我的代码,因为我正在编写 ES2016。 这不是开箱即
在我的 typescript 项目中,我使用的是 "whatwg-fetch": "2.0.3"这是这个 poly fill ans 作为类型的最新版本 我正在使用这个版本 "@types/whatw
为什么 WHATWG 不允许 HTML 4 和 HTML5 中的嵌套表单? 编辑:问题最初描述于 How do you overcome the HTML form nesting limitatio
以上三者有什么关系?到目前为止,这是我的理解:ES6 spec定义 ES6 modules 的语法,但它没有指定如何加载这些模块。在浏览器环境中使用它们的唯一方法是通过模块脚本。还有一个动态导入运算符
我正在尝试使用 WHATWG URL 对象支持读取文件 here 我收到这个错误:未捕获的 TypeError: URL 不是构造函数 这是我的代码: var fs = require("fs");
当我尝试在 ReactNative 项目中运行 npm install 时,我得到了这个错误。为了解决这个问题,我也尝试安装 whatwg-fetch@^1.0.0 但同样的错误。 UNMET PEE
我把“回归错误”这个词用引号引起来,因为显然对此有一些不同的看法。有关完整详细信息,请跟踪 Bug 24796在 Bugzilla 中。 简而言之,Google Chrome 根据最新版本的 What
我是一名优秀的程序员,十分优秀!