我正在尝试将我的 super 代理发布请求中的内容类型发送到multipart/form-data。
var myagent = superagent.agent();
myagent
.post('http://localhost/endpoint')
.set('api_key', apikey)
.set('Content-Type', 'multipart/form-data')
.send(fields)
.end(function(error, response){
if(error) {
console.log("Error: " + error);
}
});
我得到的错误是:
TypeError:参数必须是字符串
如果我删除了:
.set('Content-Type', 'multipart/form-data')
我没有收到任何错误,但是我的后端正在以内容类型接收请求:application/json
如何强制将内容类型设置为multipart/form-data,以便可以访问req.files()?
最佳答案
首先,您不会提及以下任一情况:
.set('Content-Type', 'multipart/form-data')
或者
.type('form')
其次,您不使用
.send
,而是使用.field(name, value)
。例子
假设您要发送带有以下内容的表单数据请求:
name
和phone
photo
因此,您的请求将如下所示:
superagent
.post( 'https://example.com/api/foo.bar' )
.set('Authorization', '...')
.accept('application/json')
.field('name', 'My name')
.field('phone', 'My phone')
.attach('photo', 'path/to/photo.gif')
.then((result) => {
// process the result here
})
.catch((err) => {
throw err;
});
并且,假设您要发送JSON作为其中一个字段的值,则可以执行此操作。
try {
await superagent
.post( 'https://example.com/api/dog.crow' )
.accept('application/json')
.field('data', JSON.stringify({ name: 'value' }))
}
catch ( ex ) {
// .catch() stuff
}
// .then() stuff...
关于node.js - 如何使用node.js super 代理发布multipart/form-data,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13864983/