XMLHttpRequest: upload 属性

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

注意:此功能在 Web Workers 中可用,但 Service Workers 除外。

XMLHttpRequestupload 属性返回一个 XMLHttpRequestUpload 对象,该对象可用于监视上传进度。

它是一个不透明的对象,但因为它也是一个 XMLHttpRequestEventTarget,所以可以为其附加事件监听器来跟踪其进程。

注意: 向此对象附加事件监听器会使请求不再是“简单请求”,并且在跨域时会触发预检请求;请参阅 CORS。因此,需要在调用 send() 之前注册事件监听器,否则上传事件将不会被分发。

注意: 规范似乎也表明应该在调用 open() 之后附加事件监听器。然而,浏览器在这方面存在 bug,通常需要先于 open() 注册监听器才能工作。

以下事件可以在 upload 对象上触发,用于监视上传过程:

Event 描述
loadstart 上传已开始。
progress 定期触发,以指示迄今为止的进度。
abort 上传操作已被中止。
error 由于错误导致上传失败。
load 上传成功完成。
超时 上传超时,因为在 XMLHttpRequest.timeout 指定的时间间隔内未收到回复。
loadend 上传已完成。此事件不区分成功或失败,无论结果如何,在上传结束时都会发送。在此事件之前,将已发送 loaderroraborttimeout 中的一个,以指示上传结束的原因。