Node Js Server Изображения, работающие только на локальном - PullRequest
0 голосов
/ 16 ноября 2018

Я использую этот код с приложением с Node js (и угловым 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 (изображение существует)

что мне нужно сделать, чтобы этот код работал на веб-сайте?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Принятый ответ, хотя и решает проблему ОП, создает серьезную угрозу безопасности и его следует избегать при производстве. chomd -R 777 открывает папку (и все подпапки, включая файлы проекта, а не только изображения) для просмотра и изменения всеми. Вместо этого разрешения на папки должны корректироваться, как предлагает @akkonrad.

0 голосов
/ 16 ноября 2018

на удаленном сервере,

sudo chomd -R 777 your_project_folder

попробуйте, я предполагаю, что проблема с правами доступа или папка для изображения не создана.

поэтому, после проверки журнала ошибок, если папка изображенияне создан,

во-первых, вы должны создать его, во-вторых, набрав этот скрипт.это скрипт, который дает полное разрешение всей директории проекта

...