我在一个小项目上遇到麻烦。让我们从我的职能目标开始:
我有Word文档&一个JSON,我合并数据以获得一个Word文档。
所以,我创建了一个基本的Webapp,它包含一个带有文件(word文档)和json文本编辑器的表单。一旦填满,我点击生成,我想立即下载生成的文件。
我创建了一个名为 / upload 的路由,使用POST方法处理文件。
但是,我迷失了如何懒洋洋地做这件事。 (用UUID POST,然后用UUID回复GET文件?这不是最干净的方法......或者我错了)
我想知道如何发布文件并通过单一操作下载新版本。
我做了这种事情,但我非常确定我能做得更好:
const JSZip = require('jszip');
const Docxtemplater = require('docxtemplater');
const fs = require('fs');
const path = require('path');
const formidable = require('formidable');
/*
* POST
* /upload
*/
exports.postFileUpload = (req, res) => {
// Data receiver parameters
var files = [],
bufferArray = [],
fields = [],
errors = [],
form = new formidable.IncomingForm();
form.uploadDir = process.env.UPLOAD_DIR;
form.type = true;
form.keepExtensions = false;
form.on('field', function(field, value) {
fields.push([field, value]);
})
form.on('file', function(field, file){
files.push(file);
});
form.on('end', function() {
var jsonData = '';
// Document processing ...
files.forEach(function(file){
let content = fs.readFileSync(file.path, 'binary');
[...]
// Once done i've got a nodebuffer of the generated file
bufferArray.push(doc);
});
});
// Process file receiving
form.parse(req);
res.status(200).end();
};
此外,我想知道是否可以在不保存的情况下操作文档,以摆脱这个问题:fs.readFileSync(file.path, 'binary');
并停止使用磁盘存储。
我对node.js很陌生,所有答案都欢迎(也有折射建议)。