私はあなたの助けが必要です。これは私のアプリの進行を止めるために非常に重要です。私はすべてを試しましたが、私は混乱しています。私はmulterを使ってファイルをアップロードしようとします。自分のコードにPOSTMANを使用すると、応答が'File uploaded'
になりますが、すべてがOKだと思われますが、何も起こりません。つまり、req.file is undefined
がどのように変わったのかわかりません。私のコードで見てくださいMEANアプリでムルターを使用してファイルをアップロード
サーバー
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
var morgan = require('morgan');
var path = require('path');
var multer = require('multer');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var router = express.Router();
var appRoutes = require('./app/routes/api')(router,multer,path);
var passport = require('passport');
var social = require('./app/passport/passport')(app,passport);
var product = require('./app/seed/product-seeder');
app.use(morgan('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(__dirname + '/public'));
app.use('/api', appRoutes);
mongoose.connect('mongodb://localhost:27017/tutorial', function(err){
if(err){
console.log('MongoDB not connected' + err)
} else {
console.log('Scuccessfully connected to MongoDB database');
}
})
app.get('*', function(req, res){
res.sendFile(path.join(__dirname + '/public/app/views/index.html'))
})
app.listen(port, function(){
console.log('Running the server on port ' + port)
});
API
module.exports = function(router,multer,path) {
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './uploads')
},
filename: function(req, file, callback){
callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
}
})
router.post('/courses/files', function(req, res) {
var upload = multer({ storage: storage }).single('file')
upload(req, res, function(err) {
res.end('File is uploaded')
console.log(req.file)
})
})
return router
}
サービス
userFactory.storeFile = function(file){
return $http.post('/api/courses/files', file)
}
HTML
<div class="container management-user">
<form enctype="multipart/form-data" name="sendFile" ng-submit="product.sendFile(file)" novalidate>
<input type="file" name="file" id="imgInp">
<input type="submit" value="submit">
</form>
</div>
コントローラ
.directive('fileModel', ['$parse', function($parse) {
function fn_link(scope, element, attrs) {
var onChange = $parse(attrs.fileModel);
element.on('change', function (event) {
onChange(scope, { $files: event.target.files });
});
};
return {
link: fn_link
}
}])
以下のようにディレクティブを使用する
app.sendFile = function(file, valid) {
User.storeFile(app.file).then(function(data){
console.log(data)
});
}
ノートで参加するアクセス試していない場合。 –
はい、私はこの問題を同様に解決しましたが、これはすばらしい答えです!私は多くの人々がこの答えに恩恵を受けると思います、どうもありがとう –