2

我的应用程序中有一个文件上传功能,它无法上传大小超过 10MB 的 JSON 文件。如果用户上传的文件 >= 10 MB ,我的应用程序应将其拆分为较小的 JSON 文件,每个文件小于 10MB。此外,需要在新的小文件中维护正确的 JSON 对象。

有没有办法在 Javascript 或 jQuery 中做到这一点?

4

1 回答 1

2

我提出了一个这样的解决方案,没有任何特定的库。它确实使用了一些现代技术,但可能对您有用:

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">

链接到小提琴

于 2015-04-28T21:25:35.997 回答