一個圖片文件上傳之后,數據庫也需要進行操作,需要把一些相關信息同時傳到服務器。
一開始想用兩次提交的方法,把傳文件和操作數據庫分別進行,后來感覺這樣太麻煩,而且對網絡性能也不好。
起初把信息寫到了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。