2016-11-19 3 views
0

У меня настроен в моем web.config с maxrequestlength = 10MB. Но в моей системе есть функция импорта .csv и этого .csv, что мои клиенты импортируют, может иметь более 10MB. Итак, мне нужен режим с хорошей производительностью, чтобы отправить большой json (импортированный json).Какой лучший способ отправить большой json на сервер

Я думал о zip или отправлю json по частям. Каков наилучший режим?

Есть ли другие формы более эффективные?

ответ

1

Используя API файлов (https://www.html5rocks.com/tutorials/file/dndfiles/), мы можем свести к минимуму работу по загрузке большого файла. Этот метод состоит в том, чтобы нарезать загрузку на несколько кусков, создать XHR для каждой части и поместить файл вместе на сервер. Это похоже на то, как GMail загружает большие вложения так быстро. Такую технику можно также использовать, чтобы обойти ограничение на HTTP-запрос в Google App Engine на 32 МБ.

function upload(blobOrFile) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('POST', '/server', true); 
    xhr.onload = function(e) { ... }; 
    xhr.send(blobOrFile); 
} 

document.querySelector('input[type="file"]').addEventListener('change', function(e) { 
    var blob = this.files[0]; 

    const BYTES_PER_CHUNK = 1024 * 1024; // 1MB chunk sizes. 
    const SIZE = blob.size; 

    var start = 0; 
    var end = BYTES_PER_CHUNK; 

    while(start < SIZE) { 
    upload(blob.slice(start, end)); 

    start = end; 
    end = start + BYTES_PER_CHUNK; 
    } 
}, false); 

})(); 

Что не показано здесь, это код для восстановления файла на сервере.

P.S. Из таких функций, как http://underscorejs.org/#zip, также могут быть использованы.

+0

Я проверил этот образец. благодаря – user3352698

Смежные вопросы