Я использую aws-sdk-javascript для загрузки файлов в s3, и он отлично работает с небольшими файлами, но когда я загружаю большой файл размером 200 МБ, процесс повторяется много раз и не завершается
javascript:
AWS.config.update({
accessKeyId : 'XXXXXXXXXXXXXXXXXXXXXX',
secretAccessKey : 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
});
AWS.config.region = 'us-east-2';
$("#addNewdataForm").submit(function(e) {
e.preventDefault();
var bucket = new AWS.S3({params: {Bucket: 'XXXXXX'}});
var c=0;
$('#mediaFilesforUpload').each(function() {
for (var i = 0; i < this.files.length; i++) {
var filename = this.files[i].name;
var fileChooser = document.getElementById('mediaFilesforUpload');
var file = fileChooser.files[i];
if (file) {
var params = {Key: filename, ContentType: file.type, Body: file};
var started_at = new Date();
bucket.upload(params).on('httpUploadProgress', function(evt) {
var loaded = evt.loaded;
var total = evt.total;
var progressValue = Math.round( ( loaded / total ) * 100 );
var seconds_elapsed = ( new Date().getTime() - started_at.getTime() )/1000;
var bytes_per_second = seconds_elapsed ? loaded / seconds_elapsed : 0 ;
var Kbytes_per_second = Math.round(bytes_per_second / 1000);
var remaining_bytes = total - loaded;
var hours_remaining = seconds_elapsed>0 ? (remaining_bytes / bytes_per_second)/3600 : 'calculating' ;
var myi = i+1;
var minutes_remaining =0;
if( hours_remaining<1 && hours_remaining>0.01 ){
remaining = Math.round(hours_remaining*60)+'min';
}else if( hours_remaining<0.01 ){
remaining = Math.round(hours_remaining*3600)+'sec';
}else if( hours_remaining>1 ){
remaining = Math.round(hours_remaining)+'hrs';
}
var percent = parseInt((evt.loaded * 100) / evt.total)+'%';
$( '.uploadMediaProgressBar' ).css('width', percent).text(percent);
$( '.progressContainercs .speedAndTime .details li.noDone span.done' ).text(c);
$( '.progressContainercs .speedAndTime .details li.noDone span.total' ).text(i);
$( '.progressContainercs .speedAndTime .details li.remaining span' ).text(remaining+ ' "'+loaded+'/'+total+'"');
$( '.progressContainercs .speedAndTime .details li.speed span' ).text(Kbytes_per_second);
}).send(function(err, data) {
c = c+1;
});
}
};
});
return false;
});
HTML:
<form method="post" enctype="multipart/form-data" action="<?php echo sit_url()?>/myProject/admin/uploads.php?do=insert-to-bucket" id="addNewdataForm" >
<div class="form-group" style="text-align: center;">
<input required="required" style="opacity: 0;visibility: hidden;" name="mediaFiles[]" multiple type="file" id="mediaFilesforUpload" class="form-control input-lg">
<label style="background: #e5e5e5;padding: 13px 18px;position: relative;top: -20px;cursor: pointer;box-shadow: 1px 1px 4px #000;" class="text-center" for="mediaFilesforUpload">Select Files</label>
</div>
<div id="fileandsize" class="text-left">
<div class="container"></div>
</div>
<div class="form-group col-xs-12">
<button id="submitUploadMediaToDataBase" type="submit" class="form-control input-lg btn btn-primary" value="Upload">Upload</button>
</div>
</form>
Показывает «Заблокирован перекрестный запрос: одна и та же политика происхождения запрещает чтение удаленного ресурса на https://xxxxxxx.s3.us -east-2.amazonaws.com ... "в консоли в середине процесса, и это повторяется много раз, и загрузка начинается с 0 снова.в чем проблема ??