我正在嘗試制作購物車。我正在制作管理面板,我需要在其中提交影像以添加產品。創建表單后
<section>
<div class="container mt-4">
<div class="row">
<div class="col-md-6">
<h2 class="text-cnter">Add Product</h2>
<form action="/admin/add-product" method="POST" enctype="multipart/form-data">
<label for="">Name</label>
<input type="text" name="Name" class="form-control">
<label for="">Category</label>
<input type="text" name="Category" class="form-control">
<label for="">Price</label>
<input type="text" name="Price" class="form-control">
<label for="">Description</label>
<input type="text" name="Description" class="form-control">
<label for="">Image</label>
<input type="file" class="form-control">
<button class="btn btn-success mt-4" type="submit">Submit </button>
</form>
</div>
</div>
</div>
</div>
</section>
在 admin.js 檔案中(其中 admin 的路由器)
router.get('/add-products',function(req,res){
res.render('admin/add-products')
});
// router.post('/add-product',function (req,res) {
// console.log('Got it')
// });
router.post( "/add-product", function( req, res ) {
console.log(req.body)
console.log(req.file.Image)
});
module.exports = router;
app.js 檔案
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var hbs = require('express-handlebars');
var fileupload =require('express-fileupload');
var bodyParser = require('body-parser');
var userRouter = require('./routes/user');
var adminRouter = require('./routes/admin');
const {allowInsecurePrototypeAccess} = require('@handlebars/allow-prototype-access')
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
//Layout Directory Set
app.engine('hbs',hbs.engine({ extname:'hbs' , defaultLayout:'layout',layoutsDir:__dirname '/views/layout/',partialsDir:__dirname '/views/partials'}));
app.engine('handlebars', hbs.engine({
handlebars: allowInsecurePrototypeAccess(hbs)
}));
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(fileupload());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', userRouter);
app.use('/admin', adminRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// 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');
});
module.exports = app;
使用 nodemon 運行后給出提交按鈕顯示
無法讀取未定義的屬性“影像”
型別錯誤:無法讀取未定義的屬性“影像”
順便說一句,我剛剛開始使用 nodejs。這就是為什么我不了解更多。
uj5u.com熱心網友回復:
您可能需要在 admin.js 檔案中檢查這一行:
console.log(req.file.Image)
基于錯誤訊息req.file是undefined,因此它無法讀取Image。
原因是,express 需要額外的中間件來正確處理多部分/表單資料。看看穆特。這應該可以幫助您獲取表單的所有部分,包括檔案。
另請注意,您的檔案輸入不相同。所以你絕對找不到它Image。
uj5u.com熱心網友回復:
好像req.file是未定義的,所以無法讀取Image未定義的屬性。
uj5u.com熱心網友回復:
嘗試改變這一點。首先為您的輸入檔案提供一個名稱
<label for="">Image</label>
<input type="file" name = "img" class="form-control">
嘗試獲取檔案然后使用
router.post( "/add-product", function( req, res ) {
console.log(req.body)
console.log(req.files.img)
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/399374.html
標籤:javascript html 节点.js
