gpt4 book ai didi

javascript - 仅当文件上传完成时才会触发 XMLHttpRequest 事件 onProgress

转载 作者:行者123 更新时间:2023-11-30 07:54:37 26 4
gpt4 key购买 nike

我有以下 AJAX 代码,脚本将文件正确上传到服务器(node express)。我面临的问题是 onProgress 仅在下载总字节时(因此在文件上传结束时)触发,而不是在其进度期间触发。

目前我无法在客户端显示一些用于文件上传进度的 UI。

我想知道这个问题是与 AJAX 调用有关还是与服务器有关。

           var formData = new FormData();
var xhr = new XMLHttpRequest();

var onProgress = function (e) {
if (e.lengthComputable) {
var percentComplete = (e.loaded / e.total) * 100;
console.log(percentComplete);
}
};

var onLoad = function (event) {
var reponse = JSON.parse(xhr.responseText);
this._logicAddWdg(reponse);
}.bind(this);

var onError = function (err) {
console.log(onError);
};

formData.append('file', this._uploaderFile);
xhr.addEventListener('error', onError, false);
xhr.addEventListener('progress', onProgress, false);
xhr.addEventListener('load', onLoad, false);
xhr.open('post', '/uploads', true);
xhr.send(formData);

服务器 header 响应:

Accept-Ranges:bytes
Cache-Control:public, max-age=0
Connection:keep-alive
Content-Length:5510872
Content-Range:bytes 0-5510871/5510872
Content-Type:video/mp4
Date:Tue, 11 Apr 2017 12:02:20 GMT
ETag:W/"5416d8-15b5ce4a545"
Last-Modified:Tue, 11 Apr 2017 12:02:20 GMT
X-Powered-By:Express
Request Headers
view source
Accept:*/*
Accept-Encoding:identity;q=1, *;q=0
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Host:localhost:8080
Pragma:no-cache
Range:bytes=0-

最佳答案

将您的上传事件处理程序附加到 XMLHttpRequest.upload

xhr.upload.addEventListener('progress', onProgress, false);

xhr.upload 处理上传数据的事件。你之前有什么处理响应下载的进度。
所有其他处理程序应保持不变。

关于javascript - 仅当文件上传完成时才会触发 XMLHttpRequest 事件 onProgress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43345271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com