我正在構建一個NodeJs SOAP客戶端。最初,我想象服務器(即節點SOAP客戶端)允許通過REST API下載文檔(REST API經過驗證)。在Google和SO上花了很長時間之後,看起來這是不可能的。使用NodeJs提供臨時文件
這意味着當請求文檔下載時,我將不得不爲文檔進行SOAP調用,並通過AJAX將URL返回給REST客戶端。
爲了做到這一點,我需要:
- 暫時創建節點
- 文件中獲得的URL,並返回到Web客戶端
- 當請求文件併發送響應,刪除文件(出於安全目的)
這裏是我的問題:
- 有沒有這樣的框架? temp module可能是一個選項,但我真的想在每次請求後刪除,而不是在一段時間後刪除。
如果不是,我可以只使用NodeJs文件系統和Express static module?基本上,我們將修改靜態模塊看起來像這樣:
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',...
vaild?或者,我應該創建一些中間件來處理指向臨時文件的URL嗎?
完全真棒,你救了我這麼多時間去弄清楚自己。先生+1。 – 2013-10-21 19:57:40
Kickass解決方案!現在搜索了幾天,很高興我找到了這個。 +1! – Neurax 2015-10-23 15:42:54