uni-app 使用 uview 得 <u-upload> 上传 解决ios调起不了

文章讲述了在微信小程序中遇到的一个问题,即在iOS设备上无法调用相机和相册进行图片上传。作者提供了代码示例,并指出解决方案是在`u-upload`组件中添加`:source-type`属性,设置为`[camera,album]`,以确保在iOS上同时支持相机和相册功能。此外,还提到了`capture`和`accept`属性的作用,并指出在Android中最好也包含这两个属性以保证兼容性。
摘要由CSDN通过智能技术生成

1.看文档

 上面说的调取图片或视频拾取模式 用caputure 

代码如下

<template>
  <view>
    <u-upload
      :capture="['camera','album']"
      :max-count="1"
      :preview-size="100"
      :preview-image="true"
      :fileList=" images"
     @afterRead="afterRead"
    >
      <view class="u-upload__tip">上传图片</view>
    </u-upload>
  </view>
</template>

<script>
export default {
  data() {
    return {
     images: [],
    };
  },
  methods: {

                //上传图片

        afterRead(event) {

            console.log(event);

            if (event.file.size / 1024 / 1024 > 2) {

                this.$refs.uToast.show({

                    type: 'error',

                    message: "上传图片大小不能超过 2MB!",

                })

            } else if (event.file.thumb.includes("jpg") || event.file.thumb.includes("png")) {

                this.images.push(event.file);

                pathToBase64(event.file.url)

                    .then(base64 => {

                        this.model1.url.push(base64)

                    })

                    .catch(error => {

                        console.error(error)

                    })

            } else {

                this.$refs.uToast.show({

                    type: 'error',

                    message: "上传头像图片只能是 JPG/PNG 格式!",

                })

            }

        },

  }
};
</script>

我用的方法是调取手机打开相册功能和拍照功能 然后回调获取到的url 转成base64 得格式 最后和表单一起提交给后端 当然你也可以调取 uni.uploadFile 直接先将图片上传给后端

遇到bug :

以上代码上传以后 在微信小程序里电脑、安卓都可以支持调取功能 但是ios支持不了

如何解决:

解决方法很简单

在以上代码 将html改成

<view>
    <u-upload
       :source-type="['camera','album']"

:capture="['camera',’album']" 
      :max-count="1"
      :preview-size="100"
      :preview-image="true"
      :fileList=" images"
     @afterRead="afterRead"
    >
      <view class="u-upload__tip">上传图片</view>
    </u-upload>
  </view>

也就是加上 :source-type="['camera','album']" 就可以了

capture表示,可以捕获到系统默认的设备,比如:camera--照相机;camcorder--摄像机;microphone--录音。(捕获系统默认设备)

 sourceType或者 :source-type 控制照相机与相册的使用权限,可以指定来源是相册album还是相机camera,默认二者都有(控制使用权限)

accept表示,直接打开系统文件目录

注意:

微信中ios内置的浏览器是完全支持的

android中必须加上accept最好也加上capture

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值