项目场景:
移动端vue项目前端通过axios发送post请求传输FormData数据上传文件到后台
问题描述
发现pc和安卓系统正常使用new FormData()对象,但是IOS系统则产生的对象是Object{appendData : …, realFormData : …}这种格式的。
解决方案:
方法一:
const formData = new FormData();
formData.append(key, value);
axios.post(`/api/yoururl`,
data:formData.realFormData || formData
)
.then(res=>{
console.log('res=>',res);
})
方法二:
方法一的办法虽简单解决,但是也不知道不同版本系统或新的其他浏览器会产出别的数据结构。所以不保险
直接在index.html使用’< script>’ 标签解决:
<script src="https://cdn.jsdelivr.net/npm/formdata-polyfill@3.0.20/formdata.min.js"></script>
或者打开链接,赋值里面的内容保存成js文件放到项目路径,直接引用本地即可
<script src="./my-script/formdata.min.js"></script>