需求
- 上传的文件必须小于 1M,若大于1M则压缩
需要考虑的问题点
- 用react-native-image-crop-picker 拍照和从相册选择照片压缩,react-native-image-resizer 压缩文件 ,虽然两个都可以压缩图片,但都无法保证压缩后的大小
- 采用渐近法,若远远大于1M,则多压缩;小于1M,则少压缩;提高压缩的速度
- 上传成功后本地缓存数据用react-native-fs,方便预览,缓存成功后再删除多次压缩过程中产生的脏数据
解决方案
- 用递归的方法,只要大于1M 则压缩,否则上传附件
compressImage = image => {
if (image.size > 6M) {
// 调用压缩方法,传参数
} else if (image.size >3M) {
// 调用压缩方法,传参数
} else if (image.size > 1M) {
// 调用压缩方法,传参数
} else {
//调用上传文件的方法
}
};