我正在构建一个 NodeJs SOAP 客户端。最初,我想象服务器(即节点 SOAP 客户端)将允许通过 REST API 下载文档(REST API 是经过身份验证的)。在谷歌和 SO 上呆了很长时间后,看起来这是不可能的。
这意味着当请求下载文档时,我必须对文档进行 SOAP 调用并通过 AJAX 将 URL 返回给 REST 客户端。
为了做到这一点,我需要:
- 在 Node 中临时创建一个文件
- 获取其 URL 并返回 Web 客户端
- 当请求文件并发送响应时,删除文件(出于安全目的)
以下是我的问题:
- 是否已经有一个框架可以做到这一点?temp 模块可能是一个选项,但我真的想在每次请求后删除,而不是在一段时间后删除。
如果没有,我可以只使用 NodeJs 文件系统和 Express静态模块吗?基本上我们会将静态模块修改为如下所示:
return function static(req, res, next) { if ('GET' != req.method && 'HEAD' != req.method) return next(); var path = parse(req).pathname; var pause = utils.pause(req); /* My Added Code Here */ res.on('end', function(){ // delete file based on req URL }) /* end additions */ function resume() { next(); pause.resume(); } function directory() { if (!redirect) return resume(); var pathname = url.parse(req.originalUrl).pathname; res.statusCode = 301; res.setHeader('Location', pathname + '/'); res.end('Redirecting to ' + utils.escape(pathname) + '/'); } function error(err) { if (404 == err.status) return resume(); next(err); } send(req, path) .maxage(options.maxAge || 0) .root(root) .hidden(options.hidden) .on('error', error) .on('directory', directory) .pipe(res); };
有效吗res.on('end',...
?或者,我应该为指向临时文件的 URL 创建一些中间件吗?