You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo React Native安卓端FormData图片上传失败,iOS正常求助

安卓端FormData图片上传网络错误修复方案

1. 修正代码变量名错误

代码里的data:formDat是笔误,需改为data:form,变量名不匹配会导致上传数据未正确传递。

2. 移除手动设置的Content-Type

不要手动指定Content-Type为multipart/form-data, application/json,Axios会自动根据FormData生成带正确boundary的multipart/form-data请求头,手动设置会导致安卓端解析异常。修改后的请求头如下:

headers:{  
  'Authorization': token,
  'accept': 'application/json, text/plain, */*'
}

3. 适配安卓端URI格式

安卓端图片URI需调整格式,若通过Expo ImagePicker获取的URI以file://开头,需移除该前缀:

import { Platform } from 'react-native';

// 处理安卓URI
const uri = Platform.OS === 'android' ? payload.img.replace('file://', '') : payload.img;
form.append('fImage', {
   uri: uri,
   type: `image/${fileName.split('.')[fileName.split('.').length - 1]}`,
   name: fileName
})

4. 确保获取安卓文件权限

在Expo项目的app.json中配置权限:

{
  "expo": {
    "android": {
      "permissions": ["READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE"]
    }
  }
}

同时在代码中主动请求权限:

import * as ImagePicker from 'expo-image-picker';

async function requestMediaPermission() {
  const { status } = await ImagePicker.requestMediaLibraryPermissionsAsync();
  if (status !== 'granted') {
    alert('需要授予相册访问权限才能上传图片');
  }
}

5. 验证服务器请求方式兼容性

部分服务器对PATCH请求的multipart/form-data解析支持不足,可尝试将请求方式改为POST测试是否正常。

内容的提问来源于stack exchange,提问作者Youngsung Choi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:01:33