使用nodejs从运行时目录在浏览器中提供文件

在我们的应用程序中,我们将报告存储在用户定义的文件夹中 用户可以在运行时添加自己的文件夹。 Iam在网页上显示这些文件的历史logging。 在单击文件名时,我应该显示文件夹中的文件。 我如何显示非公开目录中的文件。由于它在运行时给出我没有将它们作为静态目录添加到快速服务器。

我们尝试的一个想法是使用节点静态服务器,并创build一个文件服务器与文件夹并提供文件。 为我们创build这个每个文件。 它工作正常,但我得到一个错误,说“端口已在使用”。 有没有更好的想法做到这一点? 这是正确的做法吗?

您可以使用express.static在NodeJS中执行此操作:

 const FS = require('fs') const express = require('express') const bp = require('body-parser') const app = express() function fileTest(req, res, next){ if (/\.|\/|\\/.test(req.params.file)) return res.sendStatus(400) return next(); } app.get( '/static/:file', fileTest, function(req, res, next){ req.url = req.url.replace('/static','') next() }, express.static( './static', { fallthrough: false } ) ) app.post( '/static/:file', fileTest, bp.text(), function (req, res) { FS.writeFile( './static/'+req.params.file, req.body, function (err) { if(err) return res.sendStatus(500) return res.sendStatus(200) } ) } ) app.listen( 1337 ) 

这是一个简单的例子,显示一个服务器将会:

[POST]

  • 把一个文本正文加载到内存中(陷阱:内存中的大型机构)
  • 根据URL将其保存为静态文件夹中的文件

[得到]

  • search文件
  • 如果find返回文件

好消息是您可以创build文件,然后在不重新启动服务器的情况下请求文件。 坏消息是,这是一个非常慢的服务器(相对于其他选项)。

就像所有的例子一样,没有好的做法,所以一定要适应你的需要。

事情要考虑,因为你采用它:

  • 我如何让人们将文件保存到其他文件夹?
  • 如何禁止人们将文件保存到其他文件夹我不希望他们?
  • 正当授权