próbuję:użyciu zip.js odczytać plik zip za pomocą XMLHTTP/wywołania ajax na node.js
- Wyślij plik zip poprzez XMLHTTP do klienta
- następnie odczytać pliku przy użyciu zip.js i czynią jego zawartość
pomyślnie odbierać binarnego pliku tj zwrotnego sukces nazywa, ale pojawia się błąd i gdy próbuję zrobić getEntries. Myślę, że błąd wynika ze sposobu wysyłania strumienia, proszę o pomoc.
Error msg:
Błąd odczytu pliku zip
mojego kodu po stronie klienta (przy użyciu kątowa):
$http.get(window.location.origin + '/book/'+bookName,{responseType:"Blob"}).
success(function (data , error) {
var a = new Uint8Array(data);
//var dataView = new DataView(data);
//var blob = new Blob(dataView.buffer);
zip.useWebWorkers = true;
zip.workerScriptsPath = '/js/app/';
zip.createReader(new zip.BlobReader(data), function(reader) {
// get all entries from the zip
reader.getEntries(function(entries) { //HERE I GET THE ERROR
if (entries.length) {
// get first entry content as text
entries[0].getData(new zip.TextWriter(), function(text) {
// text contains the entry data as a String
console.log(text);
// close the zip reader
reader.close(function() {
// onclose callback
var a = 0;
});
}, function(current, total) {
// onprogress callback
var a = 0;
});
}
});
},
function(error) {
// onerror callback
var a = 0;
});
})
.error(function (data , error) {
var a = 0;
});
moim serwerze kodu z boku na węźle:
router.get('/book/:bookName',function (req , res) {
console.log('Inside book reading block : ' + req.params.bookName);
req.params.bookName += '.zip';
var filePath = path.join(__dirname,'/../\\public\\books\\' ,req.params.bookName);
var stat = fileSystem.statSync(filePath);
res.writeHead(200, {
//'Content-Type': 'application/zip',
'Content-Type': 'blob',
'Content-Length': stat.size
});
var readStream = fileSystem.createReadStream(filePath);
// replace all the event handlers with a simple call to readStream.pipe()
readStream.pipe(res);
});
Downvote bez komentarza. Możesz przynajmniej podzielić się przyczyną. – Sandeep