首页 > 解决方案 > RP - 发布表单数据未正确传递给服务

问题描述

我需要用formdata传递文件,用java编写的服务器应该收到如下

公共响应 uploadFileWithMetadata(ObjectMetadata objectMetadata, MultipartBody multipartBody) {}

下面是客户端代码,我正在传递它作为 objectMetadata 作为 null 发送,multipartBody 数组有 2 个值,一个带有文件,另一个带有 objectMetadata,并且服务不接受作为有效输入。在服务器端接收到的 ObjectMetadata 应该是application/json,我在 formdata.xml 中设置了它。但这是作为文本/纯文本接收的,我怀疑这会导致问题

var options = {
    method: 'POST',
           uri: url,
           formData: {
               objectMetadata: {value: JSON.stringify(inputToPass),options:{'Content-Type': 'application/json'}},
               file1: fs.createReadStream('/Users/mohansee/Desktop/Node_drekar_setup.docx')
           }
       };

rp(options) 
    .then(function (body) { 
        console.log('inside success'); console.log(body) 
    }) .catch(function (err) { 
    console.log('inside error'); 
    console.log(err); 
});

请检查并告知我是否在数据部分缺少需要作为单独参数传递的内容

标签: node.jsrestpostrequestrequest-promise

解决方案


更改 formData 并添加标题解决了问题

        formData: {
            objectMetadata: {
                value: inputToPass,
                options: {              
                    contentType: 'application/json'             
                }
            },
            file1: { 
                value: fs.createReadStream('Node_drekar_setup.docx'),             
                options: {                
                    contentType: 'multipart/form-data'             
                }
            }
        }

推荐阅读