2017-02-10 1 views
0

je cherche la conversion côté client à gzip de fichier (dans le navigateur) et a trouvé pako.Saving Uint8Array à un gzip après la conversion

chose est que je suis mon exemple en cours d'exécution pour cette conversion en utilisant des fonctions Node.js qui sont côté serveur (au moins c'est ma compréhension de Node.js d'après ce que j'ai lu). Je voudrais remplacer à la fois «fs» (pour écrire dans un fichier) et «buffer» (pour enregistrer au format qui est accessible en écriture pour la nouvelle fonction responsable de l'écriture dans un fichier) certaines fonctions javascript natives.

Ceci est le code.

var pako = require('pako'), data = "sample text"; 
var fs = require('fs'); 

data = pako.gzip(data); 
var buffer = new Buffer(data.length); 
for (var i = 0; i < data.length; i++) { 

    buffer.writeUInt8(data[i], i); 

} 

var wstream = fs.createWriteStream('output.gz'); 

wstream.write(buffer); 
wstream.end(); 
+0

Quelle est votre question? –

+0

Comment suis-je censé sauver Uint8Array à la fonction responsable de l'écriture dans un fichier? – AESTHETICS

+0

+ Je voudrais remplacer la fonction actuelle que j'utilise pour écrire dans le fichier – AESTHETICS

Répondre

0

Vous ne dites pas vraiment ce que votre objectif final est, mais je devine que vous voulez générer un fichier que l'utilisateur peut télécharger à partir du navigateur. En utilisant le Blob API c'est simple. Le dessous est basée sur (lire: à peu près identique à) an example in the MDN docs:

const data = 'sample text'; 
 
const gzipped = pako.gzip(data); // => Uint8Array 
 
const blob = new Blob([gzipped], {type: 'application/gzip'}); 
 
const blobUrl = URL.createObjectURL(blob); 
 

 
console.log('Generated Blob; object URL: %s', blobUrl); 
 

 
// render link 
 
const link = document.createElement('a'); 
 
link.setAttribute('href', blobUrl); 
 
link.innerHTML = 'Download file'; 
 
document.body.appendChild(link);
<script src="https://unpkg.com/[email protected]/dist/pako_deflate.js"></script>

+0

Désolé de ne pas donner une explication complète de ce que je voulais faire. Je ne suis pas sûr de la façon dont il devrait me regarder, mais le point principal n'était pas l'utilisation de l'informatique serveur. L'enregistrement et l'utilisation du système de fichiers est temporaire pour vérifier si cela fonctionne mais je voudrais publier le fichier gziped dans le répertoire du serveur, sous forme de base de données qui soit lisible juste après ungziping. – AESTHETICS

+0

OK. Dans quelle partie avez-vous des problèmes? –

+0

Je viens de remarquer un extrait, sympa! Avez-vous inclus tous les fichiers Javascript ou seulement ceux nécessaires? J'ai pensé à inclure seulement ceux requis pour cette opération. – AESTHETICS