仅在本地工作的 Node Js 服务器图像

Node Js Server Images working only on local

我将此代码与带有 Node js(和 angular 6)的应用程序一起使用来读取图片:

Nodejs 服务器文件:

    ....
var express = require('express');
var path = require('path');
var app = express();
..
    const bodyParser = require('body-parser');
    const cookieParser = require('cookie-parser');
    const fileUpload = require('express-fileupload');
    const cors = require('cors');


    // view engine setup
     app.set('uploads', path.join(__dirname, 'uploads'));
    app.set('view engine', 'jade');

    app.use(cors());
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(fileUpload());
    app.use('/uploads', express.static(__dirname + '/uploads'));


    app.post('/upload', (req, res, next) => {
      console.log(req);
      let imageFile = req.files.file;

      imageFile.mv(`${__dirname}/uploads/${req.body.filename}.jpg`, function(err) {
        if (err) {
          return res.status(500).send(err);
        }

        res.json({file: `uploads/${req.body.filename}.jpg`});
      });

    })

    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      const err = new Error('Not Found');
      err.status = 404;
      next(err);
    });

    // error handler
    app.use(function(err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};

      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });

    app.listen(8888, () => {
      console.log('8888');
    });

此代码正在本地读取图片。 例子: http://localhost:8888/uploads/02.jpg

但是在服务器上部署此代码时 我无法读取文件。例子: http://www.mywebsite.com/uploads/image.jpg(已有图像)

我需要做什么才能使此代码在在线网站上运行?

谢谢。

在远程服务器中,

sudo chomd -R 777 your_project_folder

试一试, 我的猜测是未创建图像的权限问题或文件夹。

因此,检查错误日志后,如果未创建图像文件夹,

首先,您应该创建它, 第二,输入这个脚本。它是对项目的所有目录给予完全权限的脚本

接受的答案虽然看似解决了 OP 的问题,但会造成严重的安全威胁,应在生产中避免。 chomd -R 777 打开文件夹(以及所有子文件夹,包括项目文件,不仅是图像)供所有人查看和修改。相反,应该像@akkonrad 建议的那样细粒度地调整文件夹权限。