我是Node.js的新手,我正在尝试运行一个MERN电影票预订系统。前端中的以下代码段表示为特定电影上传图像的函数:
null
export const uploadMovieImage = (id, image) => async dispatch => {
try {
const data = new FormData();
data.append('file', image);
const url = '/movies/photo/' + id;
console.log(url);
const response = await fetch(url, {
method: 'POST',
body: data
});
console.log(response);
const responseData = await response.json();
console.log(responseData);
if (response.ok) {
dispatch(setAlert('Image Uploaded', 'success', 5000));
}
if (responseData.error) {
console.log("error 2");
dispatch(setAlert(responseData.error.message, 'error', 5000));
}
} catch (error) {
console.log("error");
dispatch(setAlert(error.message, 'error', 5000));
}
};
null
这是我在服务器端的index.js:
null
const express = require('express');
const path = require('path');
if (process.env.NODE_ENV !== 'production') {
require('dotenv').config({ path: path.join(__dirname, '../.env') });
}
require('./db/mongoose');
// Routes
const userRouter = require('./routes/users');
const movieRouter = require('./routes/movies');
const cinemaRouter = require('./routes/cinema');
const showtimeRouter = require('./routes/showtime');
const reservationRouter = require('./routes/reservation');
const invitationsRouter = require('./routes/invitations');
const app = express();
app.disable('x-powered-by');
const port = process.env.PORT || 8080;
// Serve static files from the React app
app.use(express.static(path.join(__dirname, '../../../client/build')));
app.use('/uploads', express.static(path.join(__dirname, '../uploads')));
app.use(function(req, res, next) {
// Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', '*');
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
// Request headers you wish to allow
res.setHeader(
'Access-Control-Allow-Headers',
'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers,X-Access-Token,XKey,Authorization'
);
// res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
// Pass to next layer of middleware
next();
});
app.use(express.json());
app.use(userRouter);
app.use(movieRouter);
app.use(cinemaRouter);
app.use(showtimeRouter);
app.use(reservationRouter);
app.use(invitationsRouter);
//app.get('/api/test', (req, res) => res.send('Hello World'))
// The "catchall" handler: for any request that doesn't
// match one above, send back React's index.html file.
//app.use(bodyParser.urlencoded({ extended: false }))
app.get('/*', (req, res) => {
res.sendFile(path.join(__dirname + '../../../client/build/index.html'));
});
app.listen(port, () => console.log(`app is running in PORT: ${port}`));
null
下面是路由器的代码段。/routes/movies
null
// Create a movie
router.post('/movies', auth.enhance, async (req, res) => {
const movie = new Movie(req.body);
try {
await movie.save();
res.status(201).send(movie);
} catch (e) {
res.status(400).send(e);
}
});
router.get(
'/movies/photo/:id',
auth.enhance,
upload('movies').single('file'),
async (req, res, next) => {
const url = `${req.protocol}://${req.get('host')}`;
console.log(url);
const { file } = req;
const movieId = req.params.id;
try {
if (!file) {
const error = new Error('Please upload a file');
error.httpStatusCode = 400;
return next(error);
}
const movie = await Movie.findById(movieId);
if (!movie) return res.sendStatus(404);
movie.image = `${url}/${file.path}`;
await movie.save();
res.send({ movie, file });
} catch (e) {
console.log(e);
res.sendStatus(400).send(e);
}
}
);
null
图像无法上传,当我运行inspect/console时,它会在这里显示enter image description
您正在向/movies/photo/someid
发出POST请求
您的POST处理程序用于/movies
并且位于注册到/movies
的路由器上,因此您需要向其发出POST请求的URL是/movies/movies
。
您需要使您的URL匹配!
我在Python中的Selenium webdriver上遇到了一个图像上传问题,我检查了HTML并使用完整的Xpath来定位元素,但没有工作。我仍然收到此错误selenium.common.exceptions.nosuchelementexception:消息:没有这样的元素:找不到元素:{“method”:“XPath”,“selector”:“/html/body/div[2]/div/d
问题内容: 我正在尝试使用express创建一个简单的表单处理程序。我为表单尝试了以下代码: 这是我的app.js代码: 提交表单后,我不断收到错误消息“ CANNOT POST /”。我是否缺少类似模块的内容? 问题答案: 这样你应该尝试 您将来应该记住的事情参考: 您将url编码扩展为true 您没有任何要求获取表格的请求 您正在使用HTML命名变量,这是不良做法之一 谢谢与欢呼
我无法上载firebase存储上的配置文件图像。我正在把烤面包片上的错误打印出来。为什么会出现这种情况?我无法解决这个问题,我审查了我的代码很多次。问题可能是什么?我如何调整我的代码以使其正常工作?提前向大家表示感谢。
我正在开发我的第一个MERN stack网络应用程序。我完成了开发并尝试在VPS中托管。一切正常。但是,我无法查看上传的图像。我与您分享关于项目结构的几个细节。 React应用程序是为生产而生成,并保存在公用文件夹中。 上载文件夹创建,用户上载的图像保存在其中,其位置存储在DB中。(例如:/uploads/user1/img1.jpg)。使用Multer处理图像上载。 我可以访问我的web应用程序
我试图上传一个图像从本地使用bas64做图像检测。 和一切正常工作在localhost和邮递员。 但部署后,我得到了CROS错误。 我已经在 cors中间件在使用url获取图像时工作正常, 但是当我试图使用bas64从本地上传图像时,控制台显示: 这是我尝试过的解决方案: cors-任何地方 然后显示。 由于在localhost和postman中测试时没有错误,我发现一些文章说这可能仍然是cors
为什么我上传新图片时不能删除我的旧图片? 这是我用来存储数据和图像的控制器。我的文件图像名由nama_post_adps和$imageName组合存储,其中$imageName是对