我正在构建一个 NodeJs SOAP 客户端。起初,我设想服务器(即 Node SOAP 客户端)将通过 REST API(已进行身份验证)允许下载文档。经过一番在 Google 和 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?