Загрузка в aws s3 повторяется более одного раза в процессе - PullRequest
0 голосов
/ 31 января 2019

Я использую 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 снова.в чем проблема ??

...