0
サーバでファイルデータを解析しようとしていますが、問題なく動作していますが、アップロードフォルダ内のローカルディスクにアップロードし、次にデータを読み込んでいます。これはうまく動作しているコードですが、大きなxlsxファイルをアップロードするときに問題があります。excelファイルをアップロードし、hapi.jsにファイルをローカルに保存せずにサーバで解析する方法
server.route({
method: 'post',
path: `${(options.apiBase || '/xlsx/')}get`,
config: {
payload: {
output: 'stream',
parse: true,
allow: 'multipart/form-data'
}
},
handler: function (req, reply) {
try {
const data = req.payload;
if (data.file) {
let name = data.file.hapi.filename;
console.log("FIlename: " + name);
let path = __dirname + "/uploads/" + name;
let file = fs.createWriteStream(path);
data.file.pipe(file);
data.file.on('end', function (err) {
if (typeof require !== 'undefined')
XLSX = require('xlsx');
const workbook = XLSX.readFile(path);
console.log("row======>>>>");
const sheet_name_list = workbook.SheetNames;
const content =
XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]);
console.log(content);
var ret = {
filename: data.file.hapi.filename,
headers: data.file.hapi.headers
}
reply(JSON.stringify(content));
})
} catch (err) {
console.log('Err----------------------' + err);
// error handling
reply(Boom.badRequest(err.message, err));
}
}
});
next();
hapijsドキュメントには、アップロードごとに一時ファイルが作成されることが記載されています。処理後にこのファイルを削除することができます –