Android设备上的Axios帖子给我网络错误

时间:2019-11-22 16:02:05

标签: android react-native axios expo

我在s3中有一个对预签名URL的axios调用以进行上传,此操作在IOS中运行良好,但在android中抛出“ Netowork Error”。

代码非常简单,但是没有任何其他信息(响应为空),我不知道如何解决这个问题。

            axios.post(presignedPostData.url, formData, config)
                .then(function (response) { 
                })
                .catch(function (err) { console.log('S3err',err, err.response) })

我将expo-native与expo一起使用,axios调用在ios和Web版本中都有效。


更新

问题似乎与formdata有关,例如,如果我删除了formdata显然我的帖子不起作用,但是错误(缺少前提条件...)和状态(412)代码都可以,但是我使用了formdata不是错误描述,也不是状态码。


更新2:从s3.createPresignedPost(在ios和网络中均可使用)自动生成的表单数据

{"_parts":[["Content-Type","video/mp4"],["key","src-058ef4d0-0d49-11ea-8478-3b47e74a5983.mp4"],["acl","public-read"],["bucket","my.bucket"],["X-Amz-Algorithm","AWS4-HMAC-SHA256"],["X-Amz-Credential","mycredentials"],["Policy","mypolicy"],["X-Amz-Signature","mysignature"],["file",{"cancelled":false,"width":1280,"type":"video","uri":"file:///data/user/0/host.exp.exponent/cache/ExperienceData/%myapp%252Fmyapp/ImagePicker/8d68fafa-5c47-4436-9323-dc0d8702dc5d.mp4","rotation":90,"height":720,"duration":1280}]]}

也用提取(代替axios)进行了测试,同样的问题。


更新3

如果我使用FyleSystem

`从“ expo-file-system”导入*作为文件系统;

//mediaArray['file'] = file;
mediaArray['fileALT'] = FileSystem.cacheDirectory+name

我可以使用代码204进行上传,但上传的文件不正确。也许在图像选择器上存在权限问题。仍然无法运行该过程,但是有了这些新信息,也许有人可以有个主意。

1 个答案:

答案 0 :(得分:0)

该问题似乎已解决,我正在寻找上传视频,文件选择器添加“ video”作为类型,这适用于IOS和WEB,但不适用于ANDROID,要在android中也能工作,该类型必须为更具体,例如.mp4视频的“ video / mp4”或mov视频的“ video / mov”等。我希望这可以帮助某人在android中实现mutlipart / form-data。