React Native与Expo:Axios开机自检可在模拟器上运行,但不能在物理设备上运行

w1jd8yoj  于 2022-11-05  发布在  iOS
关注(0)|答案(1)|浏览(175)

我正在尝试上传一张图片和一些数据到我的API与Axios在我的世博会应用程序。
第一个
我还使用了expo-image-picker,并将结果附加到FormData

const result = await ImagePicker.launchCameraAsync({})

if (result.cancelled) {
  return
}

const personalPhotoUriParts = result.uri.split('.')
const personalPhotoFileType = personalPhotoUriParts[personalPhotoUriParts.length - 1]

const formData = new FormData()

formData.append('email', 'teste@mail.com')
formData.appent('password', '123456')

formData.append('personal_photo', {
  uri: result.uri,
  name: `personal_photo.${personalPhotoFileType}`,
  type: `image/${personalPhotoFileType}`
})

register(formData) // from register.ts

所有的东西都在模拟器上按预期工作,发送和打印我从PHP API主体获得的内容:

// var_dump($_POST);
Array [
  "email": "test@mail.com",
  "password": "123456"
]

// var_dump($_FILES)
Object {
  "personal_photo": Object {
    "error": 0,
    "name": "document_photo.jpg",
    "size": 135327,
    "tmp_name": "/tmp/php5o11qT",
    "type": "image/jpg",
  }
}

但是当我试图从物理设备发送它时,我在两种情况下都得到一个空的主体:

// var_dump($_POST);
Array []

// var_dump(get_file_contents('php://input'));
// nothing

// var_dump($_FILES);
Array []

我的赌注是FormData,我使用其他API路径没有问题(在物理设备上),但当我不得不使用multipart/form-data时,我遇到了这个问题。对我来说,没有意义,因为相同的API在模拟器上与React JS(WEB),Postman和RN w/ Expo一起工作。

lrl1mhuk

lrl1mhuk1#

也许你需要在你的Android清单上启用

android:usesCleartextTraffic="true"

您问题是在Android还是iOS设备上?

相关问题