fetch或者axios上传文件同时传递参数的问题
一个图片文件上传之后,数据库也需要进行操作,需要把一些相关信息同时传到服务器。
一开始想用两次提交的方法,把传文件和操作数据库分别进行,后来感觉这样太麻烦,而且对网络性能也不好。
起初把信息写到了headers里,
let config = {
headers: {
'Content-Type': 'multipart/form-data',
'myinfo_title': this.state.dish_name
}
}
axios.post(url,formData,config)
试验的时候图省事,输入的全是字母数字,运行一切正常。以为没事开始正式测试输入汉字时,前端提交操作没反应了。
各种试都不好使。我这里原来用的axios,后来用fetch试也一样不好使,但fetch有提示:
Cannot convert value in record<ByteString, ByteString> branch of (sequence<sequence<ByteString>> or record<ByteString, ByteString>) to ByteString because the character at index 0 has value 19968 which is greater than 255.
一定是字符集的问题。应该是headers有要求,只能用ascii字符。
只能另找出路。headers不能接受汉字,data能接受,那就把数据写到data里。
let formData=new FormData();
formData.append('file',file);
formData.append('myinfo_title', this.state.dish_name);
axios.post(url,formData,config)
在服务器那边用req.body.myinfo_title就取到汉字信息了。一切OK。