diff --git a/server/controllers/monitorController.js b/server/controllers/monitorController.js index 612fc328f..024a18a27 100755 --- a/server/controllers/monitorController.js +++ b/server/controllers/monitorController.js @@ -727,8 +727,7 @@ class MonitorController { const csv = pkg.unparse(csvData); - return res.success({ - msg: this.stringService.monitorsExported, + return res.file({ data: csv, headers: { "Content-Type": "text/csv", diff --git a/server/middleware/responseHandler.js b/server/middleware/responseHandler.js index e051e3fa5..5169e7160 100755 --- a/server/middleware/responseHandler.js +++ b/server/middleware/responseHandler.js @@ -45,6 +45,21 @@ const responseHandler = (req, res, next) => { data, }); }; + + /** + * Sends a raw file response (for CSV, PDF, etc.) + * @param {Object} options + * @param {Buffer|string} options.data - The file content + * @param {Object} options.headers - Headers to set (e.g. Content-Type, Content-Disposition) + * @param {number} [options.status=200] - HTTP status code + */ + res.file = ({ data, headers = {}, status = 200 }) => { + Object.entries(headers).forEach(([key, value]) => { + res.setHeader(key, value); + }); + return res.status(status).send(data); + }; + next(); };