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。

posted @ 2020-04-12 23:46  桑底坡  阅读(1452)  评论(0编辑  收藏  举报