2016-04-18 3 views
0

Je suis en train d'essayer d'écrire un programme d'installation automatique pour un fichier * .exe. J'utilise node-webkit, mon décompresseur est decompress-zip. Je télécharge le programme d'installation via AJAX:docompress-zip dans l'application Node WebKit ne peut pas décompresser le fichier téléchargé, fichier téléchargé "corrompu" selon WinRAR

$.ajax({ 
    type: "GET", 
    url: 'https://mywebste.com/SyncCtrl.zip', 
    contentType: "application/zip;", 
    success: function (dat) { 
     console.log(dat) 
     fs.writeFile("./SyncCtrl.zip", dat, function() { 
     console.log(dat) 
     }) 
    }, 
    error: function (err) { 
     console.log(err) 
     fs.writeFile("./SyncCtrl.zip", err.responseText, function() { 

     }) 
    } 
    }) 

Le fichier .zip est écrit à travers le contenu err.responseText. Je sais que ce n'est pas la meilleure pratique, mais je n'ai pas été en mesure de l'obtenir dans le rappel de succès, même si le code de réponse est de 200. Ceci est pour une autre question cependant.

Après avoir écris le fichier .zip sur le disque, j'attends une demande d'authentification, puis décompressez dans le rappel de succès:

var unzip = new dc("./SyncCtrl.zip") 

     unzip.on('error', function (err) { 
      console.log("Something went terribly wrong.") 
      console.log(err) 
     }) 

     unzip.on('extract', function (log) { 
      console.log("Finished!") 
      console.log(log) 
     }) 

     unzip.on('progress', function (i, c) { //index, count (irrelevant for single file) 
      console.log("Extraction progress.") 
     }) 

     unzip.extract({ 
      path: "./SyncCtrl" 
     }) 

C'est presque copier/coller directement à partir du décompressez-zip page GitHub . Cela échoue, dans le gestionnaire d'erreurs, il imprime:

Error {message: "File entry unexpectedly large: 80606 (max: 4096)"} 

Je suppose que cette limite est en Mo? C'est très déroutant car dans les deux endroits, la taille du fichier sur le disque est de 1,7 Mo pour le fichier que j'essaie d'extraire. Toute aide est grandement appréciée.

Répondre

0

La meilleure façon d'y parvenir consiste à interpréter le fichier statique en tant que flux.

simplement en utilisant le fichier statique sur le serveur, c'est mon code noeud-webkit travail:

var file = fs.createWriteStream("./MOCSyncCtrl.zip"); 
    var request = https.get("https://moc.maps-adr.com/MOCSyncCtrl.zip", function (response) { 
    response.pipe(file); 
    });