2016-08-15 1 views
2

Je soutiens un travail de développement de site Web. Deux fichiers binaires sont téléchargés sur le navigateur client à la demande. Les deux fichiers peuvent provenir de deux sources différentes.Javascript télécharger plusieurs fichiers et concaténer dans un seul fichier

L'exigence est de concaténer les deux fichiers en un seul fichier. La création d'un fichier unique en JavaScript et l'écriture du premier contenu téléchargé suivi du deuxième contenu téléchargé est également acceptable. Est-ce faisable en JavaScript en utilisant FileAPI ou d'autres APIs connexes?

Ai-je besoin d'explorer Chrome/Firefox Extension pour atteindre la même chose?

+0

Que signifie «fusionner»? –

+0

Oups! mieux, je ferai référence à concaténer. – SetV

+0

Cela n'a pas beaucoup de sens pour moi. Deux fichiers binaires que vous concaténez littéralement? Comment le fichier résultant est-il utile ou lisible? Voulez-vous dire mettre les fichiers dans une archive comme un fichier zip? –

Répondre

1

Je ne suis pas sûr de ce que vous essayez de faire, mais si je comprends bien, vous pouvez stocker vos fichiers dans ArrayBuffers puis les fusionner:

/** 
* Creates a new Uint8Array based on two different ArrayBuffers 
* 
* @private 
* @param {ArrayBuffers} buffer1 The first buffer. 
* @param {ArrayBuffers} buffer2 The second buffer. 
* @return {ArrayBuffers} The new ArrayBuffer created out of the two. 
*/ 
var _appendBuffer = function(buffer1, buffer2) { 
    var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength); 
    tmp.set(new Uint8Array(buffer1), 0); 
    tmp.set(new Uint8Array(buffer2), buffer1.byteLength); 
    return tmp.buffer; 
}; 

Source: https://gist.github.com/72lions/4528834

Here vous pouvez En savoir plus sur ArrayBuffers et vous devriez certainement vérifier MDN Sending and Receiving Binary Data

+0

Merci! Ça aide. Y a-t-il une limite de taille maximale appliquée pour ArrayBuffer? – SetV

+0

@SetV https://stackoverflow.com/questions/17823225/do-arraybuffers-have-a-maximum-length – martriay