问题描述
在 Hapi 应用程序中,我们经常使用 FormData 对象来向服务器发送表单数据,但是在使用 FormData 时会发现一个问题,即 FormData 对象会被复制:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- -------- - --------------------- ----- ----- - ----------------- ----- ------ - --- ------------- ----- ----- ----- ----------- --- -------------- ------- ------- ----- ---------- ------- - -------- - ------- --------- ------ ----- ------ --------------------- - -- -------- ----- --------- -- -- - ----- - ------- - - -------- ----- - ---- - - -------- ----- ---- - --- ----------- ------------------- ------ ----- -------- - ----- ---------------------------------------- ----- - -------- ----------------- --- ------ -------------- - --- ---------------
在上面的示例代码中,我们使用了 axios 库向另外一个服务器发送了一个 FormData 对象,在发送时我们需要通过 form.getHeaders()
获取请求头信息,但是我们会发现在发送请求之前,FormData 对象会被复制,而且复制后的数据会被串在一起,从而导致发送的请求头信息不正确。
解决方案
为了解决这个问题,我们需要修改如下代码:
const form = new FormData() form.append('file', file) const headers = Object.assign({}, form.getHeaders()) const response = await axios.post('https://example.com/upload', form, { headers })
在上面的代码中,我们通过 Object.assign()
方法将 form.getHeaders()
方法返回的请求头信息复制到了一个新的对象中,从而解决了 FormData 对象被复制的问题。
总结
本篇文章介绍了在 Hapi 应用程序中,使用 FormData 对象时会被复制的问题,以及解决这个问题的方法。通过这篇文章的学习,我们不仅能够更好地理解 FormData 对象的使用方法,还能够避免类似问题的出现。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647ab6d6968c7c53b0662537