0
登録フォームにファイル入力を使用しています。送信ボタンをクリックすると、ユーザーがデータベースに追加され、ファイルアップロードが開始されます。onchange関数を使用してイメージをs3にアップロードする際にエラーが発生しました。角度js
私のhtmlフォームで、私はのonchange機能を使用していますが、ファイルが変更されるたびに、コンソールは機能が
コントローラに定義されていないというエラーが発生します:ユーザーのサインアップ
ためvar vm = this;
$scope.setFile = function(element) {
$scope.$apply(function() {
$scope.theFile = element.files[0];
console.log($scope.theFile)
});
}
$scope.signup = function() {
$http
.post('/api/usersignup', vm.userData)
.then(function (data) {
if (data) {
uploadImage(data.userId, $scope.theFile)
}
else {
console.log("null");
}
})
};
function uploadImage(userId, fileData) {
console.log('user----------->'+userId+"------------------>"+fileData)
$http
.post('/api/testupload', userId, fileData)
.then(function (data) {
})
}
APIを画像について
api.post('/usersignup', function(req, res) {
var name = req.body.name,
email = req.body.email,
password = req.body.password;
var newUser = new User({
name: name,
email: email,
password: password,
tag: 'user'
});
nev.createTempUser(newUser, function(err, newTempUser) {
if (err) {
return res.status(404).send(err);
}
// new user created
if (newTempUser) {
var URL = newTempUser[nev.options.URLFieldName];
nev.sendVerificationEmail(email, URL, function(err, info) {
if (err) {
console.log(err);
return res.status(404).send(err);
}
res.json({
msg: 'An email has been sent to you. Please check it to verify your account.',
info: info
});
});
// user already exists in temporary collection!
} else {
res.json({
msg: 'You have already signed up. Please check your email to verify your account.'
});
}
});
});
APIはS3にアップロード
api.post('/testupload', function(req , res) {
userId = req.body.userId;
async.waterfall([
function(done) {
crypto.randomBytes(50, function(err, buf) {
var photoid = buf.toString('hex') + '.png';
done(err, photoid);
});
},
function(photoid, done) {
var file = req.body.fileData;
var stream = fs.createReadStream(file.path);
return s3fsImpl.writeFile(photoid, stream).then(function(err){
fs.unlink(file.path, function(err){
if(err)
console.log(err);
})
var imgid = photoid;
res.json(photoid);
})
}
])
});
htmlコードはここにある:
<div class="container" ng-controller="UserCreateController as user">
<form class="form-sigin" method="post" ng-submit="signup()" enctype="multipart/form-data" >
Name: <input type="text" name="name" class="form-control" ng-model="user.userData.name">
email: <input type="text" name="email" class="form-control" ng-model="user.userData.email">
Password: <input type="password" name="password" class="form-control" ng-model="user.userData.password">
<input type="file" name="file" onChange="setFile(this)">
<button type="submit" class="btn btn-danger" >Signup</button>
</form>
</div>
私はこれを行いました....しかし、このファイルをapi呼び出しに送る方法は? 'testupload' ??? –
さて、すでにファイルの価値はありますか? '$ scope.theFile = element.files [0];' – developer033
大丈夫ですので、$ scope.theFIleをtestuploadに送ります.....しかし、どのようにそれにアクセスするのですか? req.body.theFileは定義されていません –