节点JS不提供静态图片

节点JS不提供静态图片,第1张

节点JS不提供静态图片

当有人尝试实现自己的静态文件服务器而不是使用Express或有效的方法而无法使其工作时,我在Stack
Overflow上看到了很多类似的问题。如果可以实现自己的静态文件服务器,请执行此 *** 作。如果不能,那么这可能表明它不是一个好主意。
更新:请参阅以下内容,了解不使用Express的解决方案。

问题

仅仅看一下您的代码,我已经看到了几个严重的问题,包括:

  1. 您的代码 不安全 -它允许任何人在您的系统上获取任何文件。

  2. 您的代码正在 阻止 -一旦获得任何并发连接,它将立即停止。

  3. 您的代码不适用于 二进制文件 -仅适用于文本文件,以及仅适用于UTF-8编码的文件

  4. 您的代码不适用于 大写文件名

    .jpeg
    扩展名等。

  5. 您的代码无法正确提供 HTML 文件

  6. 当文件不存在而不是使用正确的代码响应时,代码 崩溃

回答这样的问题的人有两种选择:要么花费大量的精力和时间来解决上面提到的每个问题(这种情况很少发生,因为这不是一项琐碎的任务,这就是为什么您只看到评论中提到一个或一个问题的原因。其中两个问题而不是答案),
或者 您可以解释应如何正确完成任务,而不是对最初不是一个好主意的事情添加无数次修复。

话虽这么说,您可以通过安全高效的方法来实现目标的方法是将您的静态文件(HTML,CSS,图像等)放入一个目录,例如

html
并使用Express(或其他一些框架)如下所示),并带有以下简单代码:

var path = require('path');var express = require('express');var app = express();var htmlPath = path.join(__dirname, 'html');app.use(express.static(htmlPath));var server = app.listen(80, function () {    console.log('listening on port', server.address().port);});

查看完整的示例,并在GitHub上进行说明:

  • https://github.com/rsp/node-express-static-example

我将这个示例放在GitHub上是因为Stack
Overflow上存在许多与人们在Node中提供静态文件有关的问题。它是开源的,您可以使其适应自己的需求并在代码中使用。

有关Express的更多信息,请参见:

  • http://expressjs.com/en/4x/api.html
其他选择

您可以用来提供静态文件的其他框架包括:

  • 兴亚,的RESTify,哈皮,帆,环回和更多。
没有框架

如果您仍然不希望使用能够正确完成工作的高级框架,并且想推出自己的解决方案(可能出于教育目的),
它说明了如何通过以下方式提供静态图片:

  1. express.static
    express
    内置的中间件,就像这个答案)
  2. express
    express
    但没有
    express.static
  3. connect
    (低于的一级
    express
  4. http
    (使用Node的
    http
    模块)
  5. net
    (甚至不使用
    http
    模块)

发布的所有示例均经过测试,可在节点版本4、5、6和7上运行。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5476801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存