htmlpath外的Nodejs图像不起作用

时间:2017-08-06 13:55:06

标签: html node.js express pug relative-path

我正在使用nodejs在用户个人资料页面上工作,用户可以在登录后看到自己的头像。用户可以将文件上传到常规 htmlpath 之外的uploads文件夹。我有以下文件夹结构:

  • 布局
  • node_modules
  • public(所有静态文件)
  • 模式
  • 上传(用户上传的文件)

       eps
         euro-pool-1501781922012.jpg
    
  • util的

  • 视图

这些是app.js中htmlpath的设置:

app.use(require('serve-static')(path.join(__dirname, 'public')));
app.use(require('method-override')());
app.use(express.static('public'));

在客户端我使用图像的相对路径:

<img src="../uploads/eps/euro-pool-1501781922012.jpg" class="img-circle profile-avatar" alt="User avatar" data-pin-nopin="true"> 

我也试过

 <img src="./uploads/eps/euro-pool-1501781922012.jpg" class="img-circle profile-avatar" alt="User avatar" data-pin-nopin="true"> 

但是当我导航到页面时,它无法显示图像,我得到了以下错误:

GET http://192.168.2.20:3000/uploads/eps/euro-pool-1501781922012.jpg 404 (Not Found)

我有两个问题:

  1. 是否可以访问htmlpath之外的文件?
  2. 如何在不将整个文件夹移动到公用文件夹的情况下解决此问题?
  3. 非常感谢,

    埃里克

1 个答案:

答案 0 :(得分:1)

是的,如果您不想限制对此文件夹的访问,可以设置两个不同的目录来提供静态文件:

app.use('/public', express.static(__dirname + '/public'));
app.use('/uploads', express.static(__dirname + '/uploads'));

在这种情况下,图片的路径应从/uploads开始:

<img src="/uploads/eps/euro-pool-1501781922012.jpg" ...