1

我正在使用 ngx-uploader 和 uploadInput 中的数据部分,我传递了额外的数据:

startUpload(): void {
    const event: UploadInput = {
      type: 'uploadAll',
      url: this.uploadUrl,
      method: 'post',
      data: this.data,
      headers: { 'Authorization': 'Token ' + this.userToken }
    };

    this.uploadInput.emit(event);
  }

问题是我传递的数据看起来像这样

this.data = {
    myData: {
       isThereData: true
    }
}

当阅读res.body我的快递里面时,我的数据作为[object Object]返回。

router.post('/path', upload.any(), (req, res, next) => {
    console.log(req.body) // logs [object, Object]
})

我可以在发送数据之前对数据进行字符串化处理,但随后我需要将数据内容类型与来自 的数据一起传递ngx-uploader,我不确定该怎么做,或者是否可能。

我知道我不能传递一个对象,因为UploadInput

export interface UploadInput {
    ...
    data?: {
        [key: string]: string | Blob;
    };
    ...
}

还有其他方法可以解决这个问题吗?

编辑 好吧,似乎人们不理解所以也许我问错了问题。

注意:这不是正文解析器问题。

问题是我的数据包含对象,因此数据以 [object Object] 的形式出现。

我的端点在上面的原始帖子中。

当我的数据看起来像这样时,我将其提供给我的 ngx-uploader:

let data = {
    greeting: 'hi',
    color: 'green',
    car: 'toyota',
}

在我的快递中,当我登录时request.body,数据是完美的。

但是当我的数据看起来像这样时:

let data = {
    greeting: {
        hello: 'hi',
        goodbye: 'bye'
    },
    car: {
        type: 'toyota,
        color: 'green'
    }
}

在我的快递中,当我登录时request.body,我的数据返回为[Object object].

这就是问题所在。现在我可以对数据进行字符串化,但是当我通过它时ngx-uploaderexpress不知道它是 JSON,因为ngx-uploader需要与它一起传递的内容类型。但是我正在传递带有一些数据的图像,并且在更改内容类型时出现其他错误并且图像停止工作。

所以问题在于ngx-uploader通过data属性传递数据ngx-uploader

4

3 回答 3

1

我理解您的担忧,但是在将您的数据发送到流时,它会自动将您的对象转换为字符串。在这里,在这种情况下,第一个深度可以转换为字符串,但是当它尝试将第二级对象转换为字符串时,它就会变成 [object object]。为了升级这一点,您需要先对对象进行字符串化,然后再发送它。

有关以下信息的更多信息Cannot convert object to primitive value

console.log is for logging strings or simple values

as the docs say, you can format the output, as a json for example console.log("body: %j", req.body)

or, better yet, use console.dir to log the object as it is
于 2019-03-01T11:33:20.220 回答
0

你可以试试这个代码:

router.post('/path', upload.any(), (req, res, next) => {
    res.status(200).json(req.files);
});
于 2019-02-28T23:13:03.220 回答
0

您可以使用 body-parser。

在您的 app.js 文件中

var bodyParser = require('body-parser');

app.use(bodyParser.json());

于 2019-03-01T05:14:04.917 回答