S3Upload.prototype.uploadToS3 = function(file, url, public_url, opts) {
var this_s3upload, type, xhr;
this_s3upload = this;
type = opts && opts.type || file.type;
xhr = this.createCORSRequest('PUT', url);
if (!xhr) {
this.onError('CORS not supported');
} else {
xhr.onload = function() {
if (xhr.status === 200) {
this_s3upload.onProgress(100, 'Upload completed.', public_url, file);
return this_s3upload.onFinishS3Put(public_url, file);
} else {
return this_s3upload.onError('Upload error: ' + xhr.status, file);
}
};
xhr.onerror = function() {
return this_s3upload.onError('XHR error.', file);
};
xhr.upload.onprogress = function(e) {
var percentLoaded;
if (e.lengthComputable) {
percentLoaded = Math.round((e.loaded / e.total) * 100);
return this_s3upload.onProgress(percentLoaded, (percentLoaded === 100 ? 'Finalizing.' : 'Uploading.'), public_url, file);
}
};
}
xhr.setRequestHeader('Content-Type', type);
xhr.setRequestHeader('x-amz-acl', 'public-read');
return xhr.send(file);
};
我正在使用此脚本将文件上传到S3,这是https://github.com/tadruj/s3upload-coffee-javascript的一部分。某些功能参数已稍作更改,但其他部分是相同的脚本。上载本身可以正常工作,但是由于文件是在Edge中上载的,因此进度不会更新。当我上传文件时,文件停留在0%,完成后跳到100%,中间没有任何内容。在Chrome或Firefox中这不是问题。
据我所知,问题似乎出在代码中
xhr.upload.onprogress = function(e) {
var percentLoaded;
if (e.lengthComputable) {
percentLoaded = Math.round((e.loaded / e.total) * 100);
return this_s3upload.onProgress(percentLoaded, (percentLoaded === 100 ? 'Finalizing.' : 'Uploading.'), public_url, file);
用于文件上传进度的事件侦听器未触发,调试器似乎确认了这一点。这里可能是什么问题?
答案 0 :(得分:0)
根据https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12224510/,这似乎只是某些版本的Edge的问题。此问题已在EdgeHTML版本18.17763中得到解决。