TypeError:尝试上传文件usnig exprerss-fileupload时,无法将undefined或null转换为对象

时间:2019-03-19 02:44:08

标签: node.js file-upload

我在这里真的很新,正在学习。我无法弄清楚代码中的问题。我试图上传文件并通过快速文件上传将其移动到我想要的目录中。但是它始终显示此错误。这是我的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形式为signup.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>

这里的用户模型是一个自定义模块,实际上执行几个CRUD操作。帮我弄清楚我的问题。我尝试了许多解决方案,例如使用多部分,methodOverrid等。似乎没有任何效果。

0 个答案:

没有答案