Ошибка типа: невозможно преобразовать неопределенное или нулевое значение в объект при попытке загрузить файл usnig exprerss-fileupload - PullRequest
1 голос
/ 19 марта 2019

Я действительно новичок здесь, и я учусь.Я не могу понять проблему, идущую в моем коде.Я пытаюсь загрузить файл и переместить его в желаемую директорию путем быстрой загрузки файла. Но он всегда показывает эту ошибку.Вот мой код app.js

//DECLARATION
var express  		= require('express');
var login 			= require('./controllers/login');
var signup 			= require('./controllers/signup');
var home 			= require('./controllers/home');
var logout 			= require('./controllers/logout');
var admin 			= require('./controllers/admin');
var member 			= require('./controllers/member');
var bodyParser 		= require('body-parser');
var exSession 		= require('express-session');
var cookieParser 	= require('cookie-parser');
var busboy = require('then-busboy');
var path = require('path');
var methodOverride = require('method-override')
const fileUpload = require('express-fileupload');
var app 			= express();




//CONFIGURATION
app.set('view engine', 'ejs');


//MIDDLEWARES
app.use(methodOverride());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());app.use(cookieParser());
app.use(bodyParser.json());

app.use(fileUpload());


app.use('/home', home);
app.use('/admin', admin);
app.use('/member', member);
app.use('/logout', logout);
app.use('/login', login);
app.use('/signup', signup);
app.use('/assets', express.static('ext'));
app.use(express.static(path.join(__dirname, 'ext')));

//ROUTES
app.get('/', (req, res)=> res.render('home/index'));

//SERVER STARTUP
app.listen(3000, function(){
	console.log('server started at 3000...');
});

вот мой код роутера: Home.js

var express = require('express');
var userModel = require.main.require('./model/user-model');

var router = express.Router();

router.post("/signup", function(req, res){
var name=req.body.name;
var uname=req.body.uname;
var email=req.body.email;
var mobile=req.body.mobile;
var password=req.body.password;
var type="member";

  if (Object.keys(req.file).length == 0) {
    return res.status(400).send('No files were uploaded.');
  }

  // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file
  var sampleFile = req.file.uploaded_image;

  // Use the mv() method to place the file somewhere on your server
  sampleFile.mv('/assets/images/users'+sampleFile+"."+file.mimetype, function(err) {
    if (err)
      return res.status(500).send(err);

    res.send('File uploaded!');
  });


if(name!=""&& uname!=""&&email!=""&&mobile!=""&&password!=""){
	var user = {
		name:name,
		uname: uname,
	  email:email,
		mobile:mobile,
		password: password,
		type: type,
		image:uname,
	};

	userModel.insert(user, function(status){

		if(status){
			res.render('seller/success');
		}else{
			res.render('error');
		}
	});

}else
{
	res.render('error');
}
});

module.exports = router;

И ejs формируют регистрацию.ejs:

<form method="post" >

					<table>
						<tr>
							<td>Name:
							</td>
							<td><input type="text" name="name"/>
							</td>
						</tr>
						<tr>
							<td>Username:
							</td>
							<td><input type="text" name="uname"/>
							</td>
						</tr>

						<tr>
							<td>Email:
							</td>
							<td><input type="email" name="email"/>
							</td>
						</tr>
						<tr>
							<td>Mobile:
							</td>
							<td><input type="number" name="mobile"/>
							</td>
						</tr>

						<tr>
							<td>Password:
							</td>
							<td><input type="password" name="password"/>
							</td>
						</tr>

						<tr>
							<td>
                <input  type="file" name="uploaded_image" accept=""/>
							</td>
							<td align="right">
								<input type="submit" name="submit" value="Signup" />
							</td>
						</tr>

					</table>

					<br>
				</form>

Здесь usermodel - это пользовательский модуль, который фактически выполняет несколько операций CRUD.Помоги мне разобраться в моей проблеме.Я пробовал много решений, таких как использование multi-part, methodOverrid и т. Д. Кажется, ничего не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...