如何在 form-data 项上设置自定义 header?

How to set custom header on form-data item?

我正在从 nodeJS 路由发送多部分数据作为响应。 我使用 form-data 库来完成,我的要求是为所有二进制数据发送额外的 header 信息。

我尝试了以下方法

 router.get('/getdata', async (req, res, next) => {
    var form = new FormData();
    var encodedImage2 = fs.readFileSync('./public/image2.png');

    var CRLF = '\r\n';
    var options = {
        header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF
    };
    form.append('image2.png', encodedImage2, options);

    res.set('Content-Type', 'multipart/form-data; boundary=' + form.getBoundary());
    form.pipe(res);
 });

在输出中我只得到 header

X-Custom-Header: 123

没有 option object 我可以得到

Content-Disposition: form-data; name="image2.png"
Content-Type: application/octet-stream

我需要一个输出 headers 类似

Content-Disposition: form-data; name="image2.png"
Content-Type: application/octet-stream
X-custom-Header: 123

只需在 expressres object 中设置您的 headers,就像您对 Content-Type:

所做的那样
router.get('/getdata', async (req, res, next) => {
    var form = new FormData();
    form.append('image2.png', fs.readFileSync('./public/image2.png'));

    res.set('Content-Type', 'multipart/form-data; boundary=' + form.getBoundary());
    res.set('X-Custom-Header', '123'); // Set header here
    form.pipe(res);
 });

我自己找到了解决办法,很简单。 可以在选项 object header 属性

中设置自定义 headers
router.get('/getdata', async (req, res, next) => {
    var form = new FormData();
    var encodedImage2 = fs.readFileSync('./public/image2.png');
    var options = {
        header: {
           'X-Custom-Header': 123
       }
    };
    form.append('image2.png', encodedImage2, options);

    res.set('Content-Type', 'multipart/form-data; boundary=' + form.getBoundary());
    form.pipe(res); 
});