uniapp遇到的选图片的大坑

遇到的问题

使用uniapp和uview进行图片上传,使用组件u-upload来实现

需求是仅使用相机进行拍照,设置source-type仅为camera,运行后,在手机浏览器上没有问题,基座运行到真机上没有问题

但是,如果是uniapp打包了一个app壳,内部嵌套的h5页面,那么即使设置了仅camera,一样会显示选择弹窗,选择相机还是图库

解决思路

  1. 查看u-upload源码,发现调用的是uni.chooseImage的方法,还是有选择弹窗

考虑到,查看如何调用到弹窗中的相机点击事件,直接调用该事件应该就可以

  1. 查看uni-app源代码,查找相机的点击事件,发现是调用了plus.camera的方法
  2. 为了方便调用,且与原来的组件保持一致,采用的方式是复制uview的u-upload组件代码,修改其selectFile方法,进行修改:如果拿不到plus,说明是h5页面获取,还调用原有的uni.chooseImage方法,写死sourceType为’camera’;如果拿得到plus,那么就调用plus.camera的方法

拿到地址后,加载本地不显示,上传无资源

使用plus.camera的方式拿到了图片路径,然后显示的时候,发现不显示;然后进行上传的时候,抓包发现上传上去的文件没有后缀,且后台拿不到文件。

因为是壳内嵌h5,js没有访问本地文件的权限,所以即使拿到了路径,但是依然无法显示,且上传没传上资源文件

读取文件

然后查看uni.upload的方法,发现上传的为文件的base64编码,不只是文件路径
所以去找如何获取对应的base64编码文件。

后来发现h5+的api中,io部分有获取base64相关的api,调用后获取到文件的base64

压缩图片

对原base64进行压缩后上传,就在网上找的例子
通过:新建image和canvas,设置canvas后drawImage的方式来进行图片压缩
draw后,再拿取新的图片的base64

最后上传

调用到uniapp的upload上传

用到的工具

vscode:查看base64的时候使用
抓包工具:查看上传图片时的大小等信息

用到的知识

js没有权限访问文件
base64
h5+

需要扩展的

vscode的使用
抓包工具的使用
h5+基本功能的了解
base64的基本了解

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uniapp中,开发支付宝小程序时可以实现免押金。具体步骤如下: 1. 首先,在支付宝开放平台上创建应用,并复制支付宝小程序的AppID。将该AppID粘贴到hbuildx项目的manifest.json文件中的支付宝小程序配置中。\[1\] 2. 接下来,在uniapp中开发支付宝小程序授权用户信息和用户手机号码的功能。与微信小程序的API有所不同,但都需要通过<button>点击事件触发。\[2\] 3. 如果你还没有注册微信小程序,可以在微信公众平台上注册一个小程序,并获取微信小程序的AppID。将该AppID复制到项目的manifest.json文件中的微信小程序配置中。\[3\] 通过以上步骤,你可以在uniapp中开发支付宝小程序,并实现免押金的功能。 #### 引用[.reference_title] - *1* *3* [uniapp微信小程序&支付宝小程序的初体验,记录一些初次遇到大坑小坑~](https://blog.csdn.net/qq_57219457/article/details/123127658)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [uniapp支付宝小程序授权用户信息、授权手机号码](https://blog.csdn.net/weixin_49175501/article/details/126106144)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值