Невозможно напрямую загрузить файл на s3, используя blueimp для большого файла (более 2 ГБ), получая https://BUCKET_NAME.s3.amazonaws.com/ net :: ERR_CONNECTION_RESET - PullRequest
0 голосов
/ 06 марта 2019

Я использую элемент управления загрузкой файлов blueimp в своем конце шрифта и пытаюсь загрузить файл размером более 2 ГБ, получая проблему BUCKET_NAME.s3.amazonaws.com/ net :: ERR_CONNECTION_RESET. Однако, когда я пытаюсь загрузить тот же файл, используя post man, со следующими параметрами, он работает нормально:

acl:VALUE_OF_ACL
policy:VALUE_OF_POLICY
AWSAccessKeyId:VALUE_OF_ACCESS_KEY
signature:VALUE_OF_SIGNATURE
key:SOME_PREFIX/postman/2gb2.pptx

В моем коде я могу загружать файлы размером более 1,5 ГБ. Из спецификации s3 он должен иметь возможность загружать файл 5 ГБ для одного объекта.

Я создаю свою политику с ограничением времени жизни, а также пробую с небольшим ограничением времени, которое составляет 30 минут, но не получилось.

Мой фрагмент кода приведен ниже:

<form id="fileupload" action="BUCKET_NAME.s3.amazonaws.com" method="POST" enctype="multipart/form-data">
    <div id="dropzone" tabindex="0" class="fade well" >
    <input type="hidden" name="policy" />
    <input type="hidden" name="AWSAccessKeyId"/>
    <input type="hidden" name="key"/>
    <input type="hidden" name="acl"/>
    <input type="hidden" name="signature"/>

    <div >
        <span ><img src="${wikiServerURL}/images/cloud-upload.png" style="width:50px;" /> Drop files to attach or</span> 
        <span class="fileinput-button"> browse

                <input type="file" name="file" multiple>

        </span>
    </div>
    </div>
    <div class="fileupload-buttonbar">
        <div class="fileupload-buttons" style="width: 100%; ">
            <button type="submit" class="start"  id="start_upload_file" style="display:none;"></button>
        </div>
    </div>
    <!-- The table listing the files available for upload/download -->
    <table role="presentation" cellspacing="0" cellpadding="0"><tbody class="files"></tbody></table>
</form>





        $('#fileupload').fileupload({
            dropZone: $('#dropzone'),
            drop: function (e, data) {
                $.each(data.files, function (index, file) {
                    console.log('Dropped file: ' + file.name);
                });
            },
            change: function (e, data) {
                $.each(data.files, function (index, file) {
                    console.log('Selected file: ' + file.name);
                });
            }, 
            added:function(e, data) {

                getFileUploadDetail(function (s3UploadMetadata) {
                    var form = new FormData();
                    form.append("acl", s3UploadMetadata.acl);               
                    form.append("policy", VALUE_OF_POLICY);
                    form.append("signature", VALUE_OF_SIGNATURE);                   
                    form.append("AWSAccessKeyId", VALUE_OF_ACCESS_KEY);
                    data.formData = form;
                    form.append("key", s3UploadMetadata.key);

                    setParentDataAndFrameSize(data);


                    },data.files[0].name);


            },
            getFilesFromResponse: function (data) {

                var filesMetadata = [];
                var metadata = {};

                metadata.name = data.files[0].name;
                metadata.size = data.files[0].size;
                metadata.thumbnailUrl = "SOME_URL";
                metadata.deleteType = "GET";
                filesMetadata.push(metadata);

                return filesMetadata;
            },
            destroyed: function (e, data) {

            },
            autoUpload: false,
            sequentialUploads: true,
            disableImageResize: true,
            maxChunkSize: 0,
            maxFileSize: 10000000000, // 100GB
            paramName: 'file' 
        }

Я также пытался с чанк загрузкой чанка, но после получения первого чанка ошибка Bad Request (400). Хотя я получаю Etag от s3 после первого чанка, но я не знаю, как использовать ETag в blueimp. Нужна помощь.

...