Я использую этот код с приложением с 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.info(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.info('8888');
});
этот код работает на локальном, чтобы читать изображения. пример: http: // локальный: 8888 / uploads / 02.jpg
Но при развертывании этого кода на сервере Я не могу читать файлы. пример: http://www.mywebsite.com/uploads/image.jpg (изображение существует)
что мне нужно сделать, чтобы этот код работал на веб-сайте?
Спасибо.
вы уверены, что URL-адрес изображения правильный? Вы проверили URL-адрес, чтобы узнать, дает ли __dirname правильный путь на сервере
да, разрешение папки и картинок на чтение, запись, выполнение. Папка для загрузки находится в том же каталоге, что и файл server.js.
заключается в том, что изображение не загружается только в угловом режиме, а загружается в браузере при посещении прямого URL-адреса на новой вкладке, попробуйте посетить этот URL-адрес на новой вкладке вашего браузера и проверьте, загружается ли изображение
также попробуйте внести следующие изменения в код: app.use('/uploads',express.static('uploads'));
@IhebSaad ты проверил
Node js вылетает, когда я запускаю сервер изображений. Я пытаюсь решить проблему, чтобы протестировать ваше решение.





на удаленном сервере,
sudo chomd -R 777 your_project_folder
попробуй, Я предполагаю, что проблема с разрешением или папка для изображения не создается.
Итак, после проверки журнала ошибок, если папка с изображениями не создана,
сначала вы должны его создать, во-вторых, набрав этот скрипт. это скрипт, который дает полное разрешение на все каталоги проекта
Спасибо. Теперь это работает! (У меня проблема при открытии порта для изображений с основным портом, но когда я тестировал его самостоятельно. Он работает)
Принятый ответ, хотя, по-видимому, решает проблему OP, представляет серьезную угрозу безопасности, и его следует избегать в производственной среде. chomd -R 777 открывает папку (и все подпапки, включая файлы проекта, а не только изображения) для просмотра и изменения всеми. Вместо этого, разрешения для папок должны быть скорректированы зерно, как предлагает @akkonrad.
Спасибо. Возьму на рассмотрение :)
Проверьте права доступа к каталогу и файлам, возможно, процессу nodejs не разрешено их читать. Кроме того, возможно, вам нужно проверить конфигурацию вашего сервера, если вам разрешено читать из этого каталога.