我有方法获取URL,我想读取二进制文件,编辑它(重写特定地址中的一些字节(跳过字节)),而不是我想将它返回给用户而不保存(更改)文件系统上的文件)。
我有这段代码来编辑文件,但我不想更改文件系统上的文件并将文件返回给用户(用户想要下载它)。
router.get('/downloadFile', function (req, res, next) {
var id = req.query.id;
var buf = new Buffer(id);
var file = '/opt/file.exe';
var filename = path.basename(file);
var mimetype = mime.lookup(file);
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
res.setHeader('Content-type', mimetype);
var wstream = fs.createWriteStream(file, {flags: 'w', encoding: 'binary'});
wstream.once('open', function(fd) {
wstream.write(file, buf, 5262720, buf.length, );
wstream.end();
// here i want to send file to user
});
});
更新 上面的代码片段实时编辑文件系统上的文件。因此,当我打开写入流并执行写入操作时 - 此更改会立即应用于文件系统上的文件。我已经找到了这样做我想要的方式,现在我问 - 这是正确的方式吗?
var content = fs.readFileSync(file);
var cnt = 5262720;
for (var i = 0; i < buf.length; i++) {
content[cnt] = buf[i];
cnt++;
}
res.end(content);
答案 0 :(得分:0)
只需发送内容,无需保存文件。
使用此代码段,用户将从浏览器下载文件。
DownloadManager