2015-04-28 2 views
2

У меня есть функция загрузки файлов в моем приложении, которая не может загружать файлы JSON размером более 10 МБ. Если пользователь загружает файл> = 10 МБ, Мое приложение должно разделить его на более мелкие файлы JSON, каждый менее 10 МБ. Кроме того, надлежащие объекты JSON необходимо поддерживать в новых файлах малого размера.Разделение большого JSON на более мелкие части в Javascript/jQuery

Есть ли способ сделать это в Javascript или jQuery?

+0

компресса затем распаковывать? –

+0

есть куки-загрузчики, которые вы можете использовать ... например, [plupload] (http://www.plupload.com/). Он также имеет код на стороне сервера на нескольких языках. – charlietfl

+0

разобрать JSON, разделить на многие части, подстроить каждый, загрузить. – dandavis

ответ

1

Я предлагаю такое решение без какой-либо конкретной библиотеки. Он действительно использует немного современных методов, но может быть полезно для вас:

var openFile = function(event, callback) { 
    // get target input 
    var input = event.target; 
    // create an instance of filereader 
    var reader = new FileReader(); 
    // define handler to get results 
    reader.onload = function(e){ 
     var contents = e.target.result; 
     // use a promise maybe to make this neater 
     callback(contents); 
    }; 
    // make sure you tell it to read as text 
    // also maybe add some validation on your input 
    // for correct types 
    reader.readAsText(input.files[0]); 
}; 

var getChunks = function(str){ 
    var chunks = []; 
    // not best at these things but this should be 
    // around 1mb max 
    var chunkSize = 1000000; 

    // while the chunk is less than the size indicated it goes 
    // into the same item of array 
    while (str) { 
     if (str.length < chunkSize) { 
      chunks.push(str); 
      break; 
     } 
     else { 
      chunks.push(str.substr(0, chunkSize)); 
      str = str.substr(chunkSize); 
     } 
    } 
    return chunks; 
} 

var fileInput = document.querySelector('#jsonUpload'); 

fileInput.addEventListener('change', function(event){ 
    openFile(event, function(str){ 
     console.log(getChunks(str)); 
    }); 
}); 

Тогда он будет читать файл JSon из:

<input type='file' accept='*' id="jsonUpload"> 

Link to the fiddle

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