Я запущен и Swagger-tools как проект nodejs в бэк-энде. Для базы данных я использую Sequilize. Я использую стороннюю библиотеку AdmZip для генерации zip-файла из пути к файлу и отправки в качестве ответа клиенту.
Проблема в том, что когда я загружаю zip-файл из браузера, он говорит, что zip-файл поврежден
вот мой код:
module.exports.getFilesFromGroupZip = (req, res) => {
const options = swagger.convertParams(req, 'getFilesFromGroupZip');
var zip = new AdmZip("");
Groups.findOne({
where: {
id: options.id
},
include: {
model: Files,
through: {
attributes: []
}
}
}).then(result => {
result.files.forEach(file => {
zip.addLocalFile(file.path);
})
response.sendZip(zip.toBuffer(), res, 200, 'getFilesFromGroupZip')
}).catch(err => {
console.log(err)
response.sendError(err, res, 404, 'getFilesFromGroupZip')
})
}
module.exports.sendZip = (result, response, statusCode, source) => {
response.statusCode = statusCode;
response.setHeader('Content-Type', 'application/zip');
console.log(`Returning ${response.statusCode} for ${source}`);
response.end(result);
};
swagger.json:
"/groups/{id}/zip.zip" : {
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"type": "string",
"description": "groupID"
}
],
"get" : {
"summary" : "Downloads zip file with files from selected group.",
"description" : "Returns dataset zip.",
"operationId" : "getFilesFromGroupZip",
"produces": [
"application/gzip",
"application/zip"
],
"parameters" : [ ],
"responses" : {
"200" : {
"description" : "Downloads zip file with files from selected group.",
"schema" : {
"type" : "file"
}
},
"400" : {
"$ref" : "#/responses/400"
},
"401" : {
"$ref" : "#/responses/401"
},
"403" : {
"$ref" : "#/responses/403"
},
"404" : {
"$ref" : "#/responses/404"
},
"500" : {
"$ref" : "#/responses/500"
}
},
"x-swagger-router-controller" : "groupsController"
}
},