用React Native Expo上传二进制文件

时间:2019-11-19 10:17:36

标签: react-native

当前,我正在尝试使用常规方式将图像从我的应用程序上传到S3存储桶:

fucntion uploadFile(uri) {
  const formData = new FormData()
  formData.appendFile('file', uri)
  // upload file here...
}

uploadFile('file:///...')

该方法对我不起作用,因为我的服务器希望接收二进制文件,并且显然可以通过这种方式将其转换为base64。我尝试这样做:

const toBlob = async uri => {
    const res = await fetch(uri);
    return await res.blob();
}
uploadFile(await toBlob('file:///...'))

似乎实际上返回的是Blob

"_data": Object {
"blobId": "773401F6-06A7-4C45-B3EE-7217BA98748B",
"name": "C05AF729-63B2-4874-9061-991A8564E8A4.jpg",
"offset": 0,
"size": 7585938,
"type": "image/jpeg",

,但仍然无法上传。我的问题是,这里的toBlob函数可以吗?有什么办法查看它是否返回了有效文件?那是正确的方法吗?在这两种方法中,文件都到达损坏的位置。我可以确认,在尝试通过将form-data键设置为file类型而不是file的邮递员上传text时,它可以工作。我需要将邮递员的这种行为复制到我的应用中

0 个答案:

没有答案