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 中的一個,以指示上傳結束的原因。