当前位置: 首页 > 知识库问答 >
问题:

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

云丰
2024-02-20

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
求大佬解答哦?

共有1个答案

小牛23039
2024-02-20

这个问题可能是由于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设备上使用其他文件上传库,看看是否能够正常工作。这些信息可能会帮助你更好地理解问题的原因,并找到解决方案。

 类似资料:
  • 图片可以正常下载 本地可以打开 但是进行上传就无法显示 我直接将url地址写死 放在img标签中也无法显示,转base64,blob依旧无法显示,因为是基于饿了么plus 做的封装 在饿了么的官网进行图片上传发现依旧无法正常显示 两张图片都是3M左右,唯一的区别可能就是一个是华为手机拍的 一个是oppo find x7拍的 oppo find x7的无法正常显示

  • 我有这样一个数组,里面每一项都是对象{id:xxx,attributes{xxx}},如果dataIndex是最外层的id,点编辑后可以正常显示,如果是attributs里面的某一项,就会变成[object Object],在proComponents官方demo里面也是这样的,除了自己写一个以外,有没有什么办法让它正常回显呢?

  • 我想在非默认端口上运行Jenkins,所以我修改了Jenkins。如下所示的xml: 它从一开始就可以正常工作http://servername:1010(而不是来自http://servername:8080)但是API(http://servername:1010/api/json?depth=1)仍然报告端口8080上作业的路径。(即“url”:http://servername:8080/

  • 我在pod上部署了SAS Viya编程。这使SASStudio在端口80上运行。我正在尝试通过下面的yaml文件使用nodeport和Inete公开SAS Studio。但在GCP控制台中,后端服务显示不健康,如果我尝试访问Ip,它会遇到默认后端或找不到页面。我可以使用集群IP和节点IP以及端口号访问服务。 如果我使用LoadBalancer服务而不是入口,那么我可以使用LoadBalancer

  • 问题内容: 我正在使用codeigniter 3.1。我想使用ajax发布上传数据。 Ajax上传文件不起作用。但是,当我发布不带ajax的简单表单时,它工作正常。 我不知道为什么,但控制台没有错误。 的HTML JAVASCRIPT 控制器 问题答案: 问题之一是文件上传使用的机制与其他表单类型不同。这就是为什么没有为您完成工作的原因。其他答案建议使用javascript,而这个答案也可以。 的