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);
Прослушиватель событий для процесса загрузки файла не запускается, и отладчик, кажется, подтверждает это. В чем может быть проблема здесь?