2015-04-28 88 views
2

我在我的應用程序中有一個文件上傳功能,它無法上傳超過10MB大小的JSON文件。如果用戶上傳文件大於等於10 MB,我的應用程序應將其分割成小於10MB的較小JSON文件。此外,正確的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