Я использую плагин Blueimp/jquery-file-upload для загрузки файлов в AWS S3 непосредственно из клиентского кода JS. Я использовал многочастную загрузку. Вот настройка загрузки файла:
multipart: true,
maxChunkSize: 10 * 1024 * 1024,
autoUpload: true,
Когда я записываю ответы с помощью этого прослушивателя событий: 'fileuploadchunkdone', я вижу, что все фрагменты также загружены, но в корзине сохраняется только последний фрагмент. Кроме того, когда я смотрю свою корзину во время загрузки, я вижу, что размер файла равен размеру фрагмента, но после загрузки полный размер файла равен размеру последнего фрагмента, и файл поврежден.
Я я делаю что-то не так? Или это какая-то ошибка?
Вот мои настройки S3:
CORS:
*
GET
POST
PUT
DELETE
3000
ETag
Content-Type
Content-Range
Content-Disposition
x-amz-acl
x-amz-meta-qqfilename
x-amz-date
authorization
*
Вот код JS, который я использую для этого:
$('.upload-video-part').each(function(){
var that = this;
var videoId;
$(this).fileupload({
sequentialUploads: true,
multipart: true,
disableValidation: true,
maxChunkSize: 10 * 1024 * 1024,
autoUpload: true,
add: function (event, data) {
$(that).find('input[type=file]').hide();
$(that).find('#progress').show();
$.ajax({
url: "/uploaded_videos",
type: 'POST',
dataType: 'json',
data: {doc: {title: data.files[0].name}},
async: false,
success: function(retdata) {
$(that).find('input[name=key]').val(retdata.key);
$(that).find('input[name=policy]').val(retdata.policy);
$(that).find('input[name=signature]').val(retdata.signature);
$(that).parent().append('');
videoId = retdata.id;
data.submit();
$.get({
url: "/edit_after_upload?id=" + videoId,
success: function(data) {
$('#edit_uploaded_video_' + retdata.id).submit(function(e, data){
e.preventDefault();
var messageArea = $('#edit_uploaded_video_' + retdata.id).find('.message-area')[0];
$.ajax({
type: 'PUT',
url: $('#edit_uploaded_video_' + retdata.id).attr('action'),
data: $('#edit_uploaded_video_' + retdata.id).serialize(),
success: function(data) {
$(messageArea).css('color', 'rgba(0, 255, 0, .5');
messageArea.innerHTML = 'Video was successfuly saved!';
$(messageArea).css('display', 'inline-block');
},
error: function(err){
$(messageArea).css('color', 'rgba(255, 0, 0, .5');
messageArea.innerHTML = err.responseJSON.errors;
$(messageArea).css('display', 'inline-block');
}
});
return false;
});
}
});
}
});
},
send: function(e, data) {},
fail: function(e, data) {
$(that).find('.fileinput-button span')[0].innerHTML = 'Video uploading failed';
$(that).find('#progress .bar').css('background', 'red');
},
done: function (event, data) {
$(that).find('.fileinput-button span')[0].innerHTML = 'Video successfully uploaded';
$(that).find('#progress .bar').css('background', 'green');
},
progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$(that).find('#progress .bar').css( 'width', progress + '%');
}
}).on('fileuploadchunksend', function (e, data) {});
});
Подробнее здесь: https://stackoverflow.com/questions/481 ... k-is-saved
Загрузка чанка непосредственно в s3 jquery-file-upload, сохраняется только последний чанк ⇐ Jquery
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение