Ich benutze Knoten https/http-Modul zum Download der Datei. Der Code sieht wie folgt aus:Node https Datei von URL abrufen und entpacken
https.get(url)
.on('response', (response) => {
response.pipe(fs.createWriteStream(dataDir + filename))
}
Im nächsten Schritt I unzip Modul verwenden, um die Datei zu entpacken.
fs.createReadStream(dataDir + filename)
.pipe(unzip.Extract({path: dataDir}))
.on('close',() => { something }
.on('error',() => { catch error}
In den meisten Fällen funktioniert alles gut. Manchmal entziffert Modul jedoch manchmal diesen Fehler:
Error: invalid signature: 0x6d74683c
Das einzige Problem, das ich bemerken kann, ist der Dateiname. Ich schnappe Dateiname von URL. Es ist der letzte Parameter einer URL. In einigen Fällen unterscheidet sich der genaue Dateiname jedoch von dem in URL angezeigten Dateinamen. Zum Beispiel:
https://github.com/request/request/archive/master.zip
Der Name in URL gezeigt ist master.zip
aber wenn ich es der Name ist herunterladen request-master.zip
.
Ist das das eigentliche Problem? Wenn ja, wie kann ich es lösen?
Vielen Dank für die Antwort. Ich werde zuerst Yauzl versuchen. – zhangjinzhou