uniapp使用uni.chooseImage选择图片后对其是否符合所需的图片大小和类型进行校验

uni.chooseImage的返回值在H5平台和其他平台的返回值有所差异,具体差异看下图

根据图片可以看出要想判断上传的文件类型是不能直接使用type进行判断的,所以我使用截取字符串的形式来判断,当前上传图片的后缀名是否符合所需要求。

要求:

上传的图片大小要在4M以内,图片的格式为JPG、PNG、JPGE,除此之外的图片都不符合要求。

代码实现:

<view class="photo">
    <view class="item-left"><text class="required">*</text>形象照:</view>
    <view class="tips">请上传真实形象照,图片大小在4M以内,图片格式仅支持JPG、PNG、JPEG</view>
    <view class="picker" @click="handlePicker">
      <image :src="formData.photo" mode="aspectFill" v-if="formData.photo" />
      <uni-icons v-else type="plusempty" size="70rpx" color="rgba(16, 16, 16, 0.34)"></uni-icons>
    </view>
</view>
const handlePicker = (e : any) => {
    uni.chooseImage({
      count: 1,
      success: function ({ tempFiles, tempFilePaths }) {
        const size = tempFiles[0].size / 1024 / 1024; // 计算文件大小(单位:M)
        const extension = tempFilePaths[0].split('.').pop();
        const arr = ['jpg', 'png', 'jpeg']; // 允许的图片格式列表
        if (size > 4) {
          uni.showToast({ title: '图片大小不能超过4M', icon: 'none' });
        } else if (extension && !arr.includes(extension)) {
          uni.showToast({ title: '图片格式仅支持JPG、PNG、JPEG', icon: 'none' }
          );
        } else {
          formData.photo = tempFilePaths[0]
        }
      }
    });
  }

效果图:

使用 Vue 或 UniApp 开发应用时,可以利用 uni-app 的 API uni.chooseImage uni.uploadFile 来实现图片的上传更换。下面是具体的实现步骤代码示例: 1. 使用 uni.chooseImage 选择图片: 该方法可以弹出图片选择器,用户可以选择本地相册中的图片,或者使用相机拍摄新图片选择图片后,会返回图片的本地文件路径。 ```javascript uni.chooseImage({ count: 1, // 默认选择1张图片 sizeType: ['compressed'], // 可以指定选择大图还是小图 sourceType: ['album', 'camera'], // 可以选择相册或相机 success: (res) => { // 处理用户选择图片 const tempFilePaths = res.tempFilePaths; // 将图片路径保存,以便上传 this.selectedImage = tempFilePaths[0]; }, fail: (err) => { // 处理错误情况 console.error(err); } }); ``` 2. 使用 uni.uploadFile 上传图片: 得到图片的本地文件路径后,使用 uni.uploadFile 方法将图片上传到服务器。该方法会返回一个上传任务 ID,可以通过这个 ID 监听上传进度上传成功后的状态。 ```javascript uni.uploadFile({ url: '服务器上传接口', // 上传图片到服务器的接口地址 filePath: this.selectedImage, // 本地图片路径 name: 'file', // 上传时的文件名 success: (uploadRes) => { // 上传成功的回调函数 const data = JSON.parse(uploadRes.data); // 处理返回的数据,比如更新UI显示上传成功的图片等 console.log('上传结果', data); }, fail: (err) => { // 上传失败的回调函数 console.error('上传失败', err); } }); ``` 请注意,上传图片到服务器通常需要处理跨域问题,确保服务器端设置允许来自客户端的请求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值