node.js - 带有节点 js 的表单数据 statusCode:307, statusMessage:'Temporary Redirect'
问题描述
以下设置有什么问题?
var form = new FormData();
form.append('something', fs.createReadStream(filePath));
form.append('data', JSON.stringify({
"stuff": "hi"
}));
form.submit({
host: "example.com",
path: `/blah`,
headers: {
"Authorization": `...`
}
}, function (err, res) {
res.resume();
});
问题是我看到:
statusCode:307, statusMessage:'Temporary Redirect'
如果我检查res
我提交表格的方式有什么问题吗?
做什么res.resume()
?
我一直在尝试遵循这个:https ://www.npmjs.com/package/form-data
解决方案
这对我来说可能是一个非常具体的问题,不幸的是,我已经忘记了使这项工作的具体细节。然而,为了人类的利益,这里是现在可以工作的代码(如果你想知道为什么事情是……等等,我已经混淆了一堆)
async uploadMedia(...) {
const url = `...`;
var form = new FormData();
form.append('x', fs.createReadStream(filePath));
form.append('y', JSON.stringify({
...
}));
let headers = this.#getHeaders();
delete headers['Content-Type'];
return new Promise((resolve, reject) => {
const req = form.submit({
method: 'PUT',
host: process.env.GATEWAY_API_URL,
path: `/api/...`,
protocol: 'https:',
headers: headers
}, function (err, res) {
if (err) {
return reject(new Error(err.message));
}
if (res.statusCode < 200 || res.statusCode > 299) {
return reject(new Error(`HTTP status code ${res.statusCode}`));
}
const body = []
res.on('data', (chunk) => body.push(chunk))
res.on('end', () => {
const resString = Buffer.concat(body).toString();
resolve(resString);
})
});
})
}
推荐阅读
- java - 从 selenium 中的网页获取 .getAttribute 有效性的子值
- sql-server - 尝试运行 db.Execute 命令时出现“/应用程序中的服务器错误”
- java - 无法使用转换 IdentityTransform 转换文件“pp-release.aar”以匹配属性 {artifactType=processed-aar}
- sql-server - 通用交易的ETL转换为Bet and Win
- keycloak - Keycloak Session and Token Timeout:客户端登录超时
- reactjs - 如何使用 create-react-app 将图像添加到列表(排行榜表)中的第一位用户?
- performance - Go 的 once 类型的效率测量
- android - 以编程方式将 TextView 样式设置为 TabLayout.Tab 默认样式
- spring - Spring Boot Mail 使用访问令牌发送电子邮件
- allure - Codeceptjs:Allure 报告未显示“测试正文”部分中的所有步骤