uni-app 部分苹果手机 uni.uploadFile上传图片返回errMsg: "uploadFile:fail"

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app 部分苹果手机 uni.uploadFile上传图片返回errMsg: “uploadFile:fail”

操作步骤:

  • 正常上传

预期结果:

  • 上传成功

实际结果:

  • 部分苹果手机 上传失败

bug描述:

  • 部分苹果手机 uni.uploadFile上传图片 返回:errMsg: “uploadFile:fail”

截图

上传失败截图

项目 信息
产品分类 uniapp/H5
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 10
HBuilderX类型 正式
HBuilderX版本号 4.24
浏览器平台 微信内置浏览器
浏览器版本 默认
项目创建方式 HBuilderX

2 回复

感谢反馈,你提到的这个问题是否可以稳定复现,并提供更多环境信息,目前信息比较模糊,比如vue 版本,HBuilderX 或者 cli,部分苹果手机是哪些机型,是否可以提供一个简单的复现工程。目前只有一张失败的截图,提供更多信息,有助于定位和解答你的问题。


针对您提到的uni-app在部分苹果手机上使用uni.uploadFile上传图片时返回errMsg: "uploadFile:fail"的问题,这通常与多种因素有关,包括但不限于文件路径错误、服务器配置问题、网络状况不佳或权限设置不当。由于无法直接访问您的设备和服务器环境,以下是一些可能的解决方案和相关代码示例,您可以根据实际情况进行排查和测试。

1. 检查文件路径

确保filePath参数正确指向了选中的图片文件。在uni-app中,通常通过<input type="file">uni.chooseImage获取图片路径。

uni.chooseImage({
    count: 1,
    success: function (res) {
        const filePath = res.tempFilePaths[0];
        uploadFile(filePath);
    }
});

function uploadFile(filePath) {
    uni.uploadFile({
        url: 'https://yourserver.com/upload', // 替换为您的服务器地址
        filePath: filePath,
        name: 'file',
        formData: {
            user: 'test'
        },
        success: function (uploadFileRes) {
            console.log('上传成功:', uploadFileRes.data);
        },
        fail: function (err) {
            console.error('上传失败:', err);
        }
    });
}

2. 服务器端配置

确保服务器端正确处理了文件上传请求。以下是一个简单的Node.js示例,使用Express框架:

const express = require('express');
const multer = require('multer');
const app = express();
const port = 3000;

const upload = multer({ dest: 'uploads/' });

app.post('/upload', upload.single('file'), (req, res) => {
    if (!req.file) {
        return res.status(400).send('No file uploaded.');
    }
    res.send('File uploaded successfully.');
});

app.listen(port, () => {
    console.log(`Server running at http://localhost:${port}/`);
});

3. 网络和权限

  • 确保设备已连接到互联网,并且网络状况良好。
  • 检查iOS设备的隐私设置,确保应用有权限访问照片库。

4. 调试和日志

  • fail回调中打印更详细的错误信息,有助于定位问题。
  • 使用开发者工具的网络面板监控上传请求,检查请求和响应详情。

通过上述步骤,您应该能够逐步定位并解决问题。如果问题依旧存在,可能需要进一步检查iOS设备的系统日志或联系服务器端的开发者。

回到顶部