我尝试使用form-data
和axios
发布文本和文件字段,但出现错误:getHeaders()
不是一个函数。下面是我的submit
代码,注意我使用的是React
和Typescript
。
import * as FormData from 'form-data'
import axios from 'axios'
submit(event: React.FormEvent<HTMLFormElement>) {
event.preventDefault()
const { title, description, pictureFile } = this.state
let data = new FormData()
data.append('title', title)
data.append('description', description)
data.append('picture', pictureFile)
axios.post('/api/route', data, {
headers: data.getHeaders() // ERROR: getHeaders is not a function
})
.then(res => handle(res))
.catch(err => handle(err))
}
我感兴趣的特定头是Authorization
,我可以手动设置它,但边界是必需的,所以...我最好尝试让getHeaders()
函数工作。
我不明白这里的问题,getHeaders
似乎是form-data
API的一部分。
请帮帮忙。
3条答案
按热度按时间sr4lhrrt1#
form-data
只在Node
上使用,如果你在浏览器上运行它,它会切换到FormData
的window's
版本。我在他们的代码中看到了这一点。zd287kbt2#
我曾经遇到过这个问题,因为我想在nodejs里面做一些单元测试,但是我的代码稍后会在浏览器中使用。
以下是对我有效的两个解决方案:
您可以在FormData类中定义
getHeaders
函数:或者您可以只编写一个三元语句:
khbbv19g3#
我们的解决方案使用Optional chaining (?.)和Nullish coalescing assignment (??=))。既适用于节点,也适用于浏览器。