zlyboy / wx-formdata

在小程序中使用formdata上传数据,可实现多文件上传
297 stars 119 forks source link

你好,我使用 formData.append("outsideSite", _this.addressName); 时发现_this.addressName如果是中文的话,发送出去的请求会是乱码,请问有解决方法吗? #8

Closed dm3030110q closed 2 years ago

dm3030110q commented 2 years ago

你好,我使用 formData.append("outsideSite", _this.addressName); 时发现_this.addressName如果是中文的话,发送出去的请求会是乱码,请问有解决方法吗?

zlyboy commented 2 years ago

工具本身发送的时候对body是经过utf8编码的,请确认后台是否也是通过utf8解码,以及解码出来的是否是乱码。小程序调试工具显示的可能会是乱码,但是后台接收是正常的。

dm3030110q commented 2 years ago

我刚才发现了乱码的原因,同时使用formData.append和formData.appendFile就会导致formData.append添加的中文乱码。

zlyboy commented 2 years ago

我这边同时使用没有问题是正常,你代码贴出来看看

dm3030110q commented 2 years ago

`

async formDataFn(tempFilePath) {
            let _this = this
            let formData = new FormData();

            formData.append("tokenId", _this.loginInfo.tokenId);
            formData.append("token", _this.loginInfo.token);
            formData.append("startlongitude", _this.longitude);
            formData.append("startlatitude", _this.latitude);
            formData.append("outsideSite", _this.addressName);
            formData.append("reason", _this.reason);
            formData.append("contactName", _this.name);
            formData.append("contactPhone", _this.phone);
            formData.append("companyName",  _this.company);
            formData.append("customerId", '');
            formData.append("applyId",'');
            formData.append("serialNumber", '');
            formData.appendFile("startPicture", tempFilePath,);

            let data = formData.getData();
            console.log(data);
            const res = await this.$request({
                url: 'oa_WebsaveOutside.do',
                method: 'POST',
                data: data.buffer,
                header: {
                    'content-type': data.contentType
                }
            })
            if (res.statusCode == 200) {
                if (res.data.code === '1') {
                    console.log('外勤打卡成功');
                } else {
                    uni.showToast({
                        icon: 'none',
                        title: res.data.message
                    })
                }
            }
        },

`

dm3030110q commented 2 years ago

微信图片_20220726173441

zlyboy commented 2 years ago

1658883178001 1658883206314 1658883221511 我这边测试正常的,你要不跟后台确认下后台收到的数据是否正常

zlyboy commented 2 years ago

我记得早的版本的开发工具调试器里面显示乱码,但是后台接收到的是正常的。我现在用的最新版,调试器也是正常显示的。

dm3030110q commented 2 years ago

好的,谢谢您,我再尝试一下。