react-native实现多张图片上传

版权声明:欢迎评论 https://blog.csdn.net/halaoda/article/details/82986009

最近在搞这个图片上传功能,,刚开始的时候iOS用的是
react-native-image-crop-picker这个插件,,iOS那边完美运行没有毛病,,,但是到android这边之后就开始报各种资源找不到的错误。。毕竟不是自己的框架,,很多地方都不敢改动,,后来经过各方面查找,,大概的原因有几种。。。版本不一样,,我的框架用的是sdk26的。。但是插件支持的是sdk27…我的版本太低了,,所以里面的资源找不到
后来从网上找到了另外一个插件react-native-syan-image-picker 这个插件

/**
     * 打开相机支持裁剪参数
     * @param options
     * @param callback
     */
    openCamera(options, callback) {
        const optionObj = {
                ...defaultOptions,
            ...options
        };
        RNSyanImagePicker.openCamera(optionObj, callback)
    },
/**
     * 以Callback形式调用
     * 1、相册参数暂时只支持默认参数中罗列的属性;
     * 2、回调形式:showImagePicker(options, (err, selectedPhotos) => {})
     *  1)选择图片成功,err为null,selectedPhotos为选中的图片数组
     *  2)取消时,err返回"取消",selectedPhotos将为undefined
     *  按需判断各参数值,确保调用正常,示例使用方式:
     *      showImagePicker(options, (err, selectedPhotos) => {
     *          if (err) {
     *              // 取消选择
     *              return;
     *          }
     *          // 选择成功
     *      })
     *
     * @param {Object} options 相册参数
     * @param {Function} callback 成功,或失败回调
    */
    showImagePicker(options, callback) {
        const optionObj = {
            ...defaultOptions,
            ...options
        };
        RNSyanImagePicker.showImagePicker(optionObj, callback)
    },
/**
     * 以Promise形式调用
     * 1、相册参数暂时只支持默认参数中罗列的属性;
     * 2、使用方式
     *  1)async/await
     *  handleSelectPhoto = async () => {
     *      try {
     *          const photos = await SYImagePicker.asyncShowImagePicker(options);
     *          // 选择成功
     *      } catch (err) {
     *          // 取消选择,err.message为"取消"
     *      }
     *  }
     *  2)promise.then形式
     *  handleSelectPhoto = () => {
     *      SYImagePicker.asyncShowImagePicker(options)
     *      .then(photos => {
     *          // 选择成功
     *      })
     *      .catch(err => {
     *          // 取消选择,err.message为"取消"
     *      })
     *  }
     * @param {Object} options 相册参数
     * @return {Promise} 返回一个Promise对象
    */
    asyncShowImagePicker(options) {
        const optionObj = {
          ...defaultOptions,
          ...options,
        };
        return RNSyanImagePicker.asyncShowImagePicker(optionObj);
    },
 /**
     * 清除缓存
     */
    deleteCache() {
        RNSyanImagePicker.deleteCache()
    },
 /**
     * 移除选中的图片
     * @param {Number} index 要移除的图片下标
     */
    removePhotoAtIndex(index) {
        RNSyanImagePicker.removePhotoAtIndex(index)
    },
  /**
     * 移除所有选中图片
     */
    removeAllPhoto() {
        RNSyanImagePicker.removeAllPhoto()
    }

这些都是这个插件所支持的方法

const defaultOptions = {
    imageCount: 6,             // 最大选择图片数目,默认6
    isRecordSelected: false,   // 是否已选图片
    isCamera: true,            // 是否允许用户在内部拍照,默认true
    isCrop: false,             // 是否允许裁剪,默认false, imageCount 为1才生效
    CropW: ~~(width * 0.6),    // 裁剪宽度,默认屏幕宽度60%
    CropH: ~~(width * 0.6),    // 裁剪高度,默认屏幕宽度60%
    isGif: false,              // 是否允许选择GIF,默认false,暂无回调GIF数据
    showCropCircle: false,     // 是否显示圆形裁剪区域,默认false
    circleCropRadius: width/2, // 圆形裁剪半径,默认屏幕宽度一半
    showCropFrame: true,       // 是否显示裁剪区域,默认true
    showCropGrid: false,       // 是否隐藏裁剪区域网格,默认false
    quality: 90,               // 压缩质量
    enableBase64: false,       // 是否返回base64编码,默认不返回
};

这些是这个插件的属性
用了之后觉得还是挺好用的只不多需要配置东西,,具体的可以去GitHub上面去搜,,,挺详细的额

猜你喜欢

转载自blog.csdn.net/halaoda/article/details/82986009