【发布时间】:2017-12-07 05:12:12
【问题描述】:
在https://github.com/mzabriskie/axios/blob/master/examples/upload/index.html之后,我已经设置了带有进度条的文件上传。
但是,我有<input type="file" multiple>,所以上传是在这样的循环中:
for (var i=0; i<files.length; i++)
{
var config = {
onUploadProgress: function(progressEvent) {
var what = Math.round( (progressEvent.loaded * 100) / progressEvent.total );
}
};
axios.post(url, data, config)
.then(function (response) {
});
}
问题是:如何将上传进度(见var what)分配给相应的文件?
我尝试过的一切都没有用:
回调函数
onUploadProgress显然不接受任何第二个参数:https://github.com/mzabriskie/axios#request-config-
注入的
progressEvent对象不包含有关上传文件的任何信息。示例:progress { target: XMLHttpRequestUpload, isTrusted: true, lengthComputable: true, loaded: 181914, total: 181914, currentTarget: XMLHttpRequestUpload, eventPhase: 2, bubbles: false, cancelable: false, defaultPrevented: false, composed: false } 循环变量
i原则上是可访问的 - 但是,它始终位于最后 位置(因为在上传期间调用onUploadProgress时循环已完成)我找不到从
onUploadProgress内部访问axios 的data的方法-
this指的是:XMLHttpRequestUpload { onloadstart: null, onprogress: null, onabort: null, onerror: null, onload: null, ontimeout: null, onloadend: null }
还有其他想法吗?
【问题讨论】:
-
我在这里遗漏了什么吗?您在 for 循环中,一次上传一个文件。这意味着在每个 progressEvent 中,您已经在引用相应的文件。你能在 progressEvent 中添加一个监听器并打印出它的“总”值吗?我想你已经在查看相应的文件了。作为旁注,将配置从 for 循环中取出,您不需要为每个文件重新定义它。
-
是的,谢谢,我已经认为答案可能是没有答案 ;-) 我只能在几天内尝试这个 - 我会报告......
-
我也想知道如何实现这一点。使用 jQuery,我一直在使用“xhrFields”参数,但我不确定 Axios 是否有类似的东西。
标签: javascript file-upload axios