我已经使用 RNFetchBlob 从“assets-library://..” url 获取 base64,我的捕获功能是
this.camera.capture()
.then((data) => {
// console.log(data);
RNFetchBlob.fs.readFile(data.path, 'base64')
.then((base64data) => {
let base64Image = `data:image/jpeg;base64,${base64data}`;
this.props.addImagesToUntagged(data.path);
})
})
之后,我在这个 base64 数据上为用户提供了一些应用内功能,最后当我需要将其发送到 s3 服务器时,我使用 axios 和 RNFetchBlob 发送此数据。以下代码为我提供了 s3 的签名 url
axios.get(ENDPOINT_TO_GET_SIGNED_URL, {params:{'file-name': file.name,'file-type': file.type,"content-type": 'evidence'}})
.then(function (result) {
// console.log(result);
returnUrl = result.data.url;
var signedUrl = result.data.signedRequest;
return uploadFile(file,signedUrl)
})
在我的 uploadFile 函数中,我通过以下代码上传图片
RNFetchBlob.fetch('PUT', signedUrl,
{'Content-Type' : file.type},
RNFetchBlob.wrap(file.uri)
)
.then(resolve)