uniapp的uni.uploader上传api在安卓端正常,ios不正常?

uniapp的uni.uploader上传api在安卓端正常,ios不正常?

部分代码

var header = {
                        "sign": signMD5,
                        "Authorization": token,
                        "nonce": nocer,
                        "deviceId": systemInfo.deviceId,
                        "deviceName": systemInfo.model,
                        "deviceType": "2",
                        "appVersion": "1.0.0",
                        "timestamp": timestamp, // 时间:年月日时分秒
                        // "Content-Type": "multipart/form-data",
                        // "Content-Type": "application/json;charset=UTF-8"
                    }
                    // let addressInfo = uni.getStorageSync('locationInfo')
                    // let addressLoaction = addressInfo.address.province + addressInfo.address.city + addressInfo.address
                    //     .district + addressInfo.address.street + addressInfo.address.streetNum

                    let uploadUrl = ""
                    if (this.openWatermark) {
                        uploadUrl = config.baseUrl + 'upload4base64'
                    } else {
                        uploadUrl = config.baseUrl + 'common/upload'
                    }

                    return new Promise((resolve, reject) => {
                        console.log(lists[i].thumb, 'lists');
                        let a = uni.uploadFile({
                            url: uploadUrl,
                            filePath: lists[i].thumb,
                            name: 'file',
                            formData: {
                                user: 'test',
                                address: '123',
                                lng: 112.23,
                                lat: 11.22,
                                // address: addressLoaction,
                                // lng: addressInfo.longitude,
                                // lat: addressInfo.latitude,
                                realname: this.userInfo.trueName,
                                file: lists[i].thumb
                            },

                            header: header,
                            success: (res => {
                                console.log(res);
                                setTimeout(() => {
                                    var data = JSON.parse(res.data)
                                    let item = this[`fileList${event.name}`][
                                        fileListLen
                                    ]
                                    this[`fileList${event.name}`].splice(fileListLen,
                                        1,
                                        Object.assign(item, {
                                            status: 'success',
                                            message: '',
                                            url: data.url
                                        }))
                                    fileListLen++
                                    this.dataForm.checkImgs = this.fileList3.map(
                                        item =>
                                        item.url).join(',')
                                    resolve(data)
                                    this.uploadFileLoading = false
                                }, 1000)
                            })
                        });
                    })

formData的参数在安卓上调用时,后端可以全部接收,而在ios上后端接收到的file参数为null
求大佬解答哦?

阅读 857
avatarAI BotBETA

这个问题可能是由于iOS和Android在处理文件上传时,对multipart/form-data格式的数据的处理方式不同。在Android上,uni.uploader可能能够正确地将文件附加到formData中并发送到服务器。然而,在iOS上,可能存在某些限制或处理方式的不同,导致文件无法正确附加或发送。

首先,你可以尝试以下几种解决方法:

  1. 检查文件路径:确保你在iOS和Android上使用的文件路径是正确的。有些时候,路径问题可能导致文件无法被正确读取。
  2. 检查后端代码:确保你的后端代码能够正确处理接收到的文件。你可以尝试使用一些工具,如Postman,来测试后端API,以确保它能够正常工作。
  3. 检查网络权限:确保你的应用有足够的权限访问网络。在iOS上,你可能需要在Info.plist文件中添加适当的网络访问权限。
  4. 更新uni-app和相关依赖:有时候,库的更新版本可能包含对这类问题的修复。确保你的uni-app和相关依赖是最新的。
  5. 使用其他上传库:如果问题依然存在,你可以尝试使用其他的文件上传库,看看是否能够解决问题。

如果以上方法都不能解决问题,你可能需要深入调查问题的原因。你可以尝试在iOS和Android设备上使用开发者工具(如Chrome DevTools或Safari Web Inspector)来查看网络请求和响应,看看是否有任何明显的不同。此外,你也可以尝试在iOS设备上使用其他文件上传库,看看是否能够正常工作。这些信息可能会帮助你更好地理解问题的原因,并找到解决方案。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题