Angular 4文件上传与其他发布数据在服务器端给出空对象(节点js)

时间:2018-01-27 13:34:18

标签: node.js angular file express

我在最近3个小时遇到问题,我试图将文件和其他帖子数据上传到服务器端,我使用角度作为前端部分和服务器端节点。 这是我的component.ts代码

save(data) {
    console.log(data);
    const files: Array<File> = this.filesToUpload;
    console.log(files);
    for(let i = 0; i < files.length; i++){
        this.formData.append("image[]", files[i], files[i]['name']);
    }

    //trying to send some dummy entry but no luck
    this.formData.append('title','dasdasdas');
    // console.log(this.formData.getAll('image'));
    // console.log('form data variable :   '+ 
    this.formData.toString());
    // console.log(this.formData.getAll('image[]'));
    this.restApi.addRecipe(this.formData).subscribe(res => 
        {
            console.log(res);
        });

这是我的角度服务代码:

addRecipe(data){
    console.log(this.baseUrl);
    const headers = new Headers({});
    let options = new RequestOptions({ headers });
    return this.http.post(this.baseUrl+'addRecipe',data,options).map(res=>res.json());
}

这是我的server.js代码:

const express = require('express');
const mongoose = require('mongoose');
const admin = require('./routes/admin');
const path = require('path');
const app = express();
const config = require('./config/config');
const bodyParser = require('body-parser');
const cors = require('cors');
mongoose.Promise = global.Promise;

mongoose.connect(config.database, (err) => {
    if (err) {
        console.log(err);
    } else {
        console.log('connected')
    }
})

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.use(express.static(path.join(__dirname, 'client/dist')));
app.use(cors());
app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods', 'DELETE, PUT');
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});
//admin route
app.use('/admin', admin);

app.listen(3000, (err) => {
    if (err) console.log("err");
       console.log("port started");
    })

这是我编写插入逻辑的控制器代码:

module.exports.addRecipe = (req, res) => {
    const body = req.body
    console.log(body);
    return;
    ...
}

每当我console.log(body),我得到一个空对象{},从角度方面我尝试改变内容类型但似乎没有任何工作,我是节点和角度的新手我搜索了很多关于这个问题,但似乎没有解决方案。

0 个答案:

没有答案