位置: IT常识 - 正文

vant的Uploader 文件上传,图片数据回显问题

编辑:rootadmin
这篇文章主要介绍了vant的Uploader 文件上传,图片数据回显问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录

推荐整理分享vant的Uploader 文件上传,图片数据回显问题,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

vant的Uploader文件上传,图片数据回显需求分析使用使用有赞Vant上传控件Uploader感悟数据处理后台处理vant的Uploader文件上传,图片数据回显需求

描述一下:点击上传证件照,选取需要的图片文件,然后图片在证件照栏展示

分析

看着挺简单的,用的是vant,里面有个文件上传的组件Uploader,它里面的文件预览模式是这样的

啊这。。。

指定不行,还好它还有自定义上传样式的,像这样

问题又来了:选取文件后没反应了!!!

其实也不是,没有反应就是没有对文件数据进行处理展示。

看一下Uploader的API:

参数file可以获取到一个文件对象

可以拿到文件名、文件类型、还有图片的base64格式的图片数据,那么我们只需要定义一个字段来接受这个图片数据,并绑定给展示证件照的图片框上就能实现图片回显了!

使用

结构部分

<van-field name="photo" label="证件照" colon class="tx"><template #input><van-image :src="')" /></template></van-field><van-uploader :before-read="beforeRead" :after-read="afterRead"><van-button icon="add-o">上传证件照</van-button></van-uploader>

方法部分

const afterRead = (file) => {state.staffPhoto = file.content;};vant的Uploader 文件上传,图片数据回显问题

Uploader里面呢还有一个API:before-read

我们一般在这个里面对图片的格式进行控制

举个栗子:

// 返回布尔值const beforeRead = (file) => {if (file.type !== "image/jpeg") {Toast("请上传 jpg 格式图片");return false;}return true;};

当然,我们也可以对图片的大小进行控制

自带的事件oversize

const onOversize = () => {Toast("文件大小不能超过 500kb");};

结构部分就是:

<van-uploader multiple :max-size="onOverSize" />

基本使用Uploader用到的功能就这些了,如果有其他的需求可以访问文档:

Uploader的基本使用

使用有赞Vant上传控件Uploader感悟

因为项目是公众号网页项目,公司前端推荐使用有赞Vant组件库,这让之前都是自己撸js,css的我仿佛打开了新世界的大门,废话不多说,上正文。

照着官方文档,我很快上手撸出了界面。

<van-uploader v-model="fileList" multiple :max-count="4"/>

因为需求说明最多只能上传4张图片,故使用了max-count来定义最大上传数量。

数据处理

我上传了一张照片,我们来看看fileList的数据是什么格式。

可以看到结果是一个数组array,每张图片都转为一个对象,对象下有两个键值分别是:content->图片base64编码(有赞这个Uploader很贴心的帮我们把图片转成base64格式流),file->一个文件对象,包含了文件名,上传路径,文件类型,文件大小等。

看完了数据,后端需要我们把文件传给他们,这里有一点需要注意,base64编码由于长度原因,请求方式必须用POST。

let photos = []that.fileList.forEach(v=> {let o = {base64Str: v.content,filename: v.file.name}photos.push(o)})

通过axios请求后台

axios.request({url: '/x/xxx/api',data: {photos: photos},method: 'POST'})后台处理@RequestMapping(value = "/api", method = RequestMethod.POST)public JSONObject xxx(@RequestBody JSONObject jsonObject) {JSONArray photos = jsonObject.getJSONArray("photos");if (photos.size() > 0) {for (int i = 0; i < photos.size(); i++) {JSONObject obj = photos.getJSONObject(i);String fileName = obj.getString("filename");String base64Str = obj.getString("base64Str");String directoryName = "xx/xx";String extension = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();InputStream inputStream = new ByteArrayInputStream(Base64.decodeBase64(base64Str.substring(base64Str.indexOf(",") + 1)));OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);client.putObject(bucketName, getRandomKey(directoryName, extension), inputStream);// extension指的是拓展名,例如".amr"}}}/*** 随机生成一个key* @return String 随机key*/public static String getRandomKey(String directoryName, String extension){StringBuffer key = new StringBuffer();if (StringUtils.isNotBlank(directoryName)) {key.append(directoryName);if (directoryName.charAt(directoryName.length() - 1) != '/') {key.append("/");}}key.append(System.currentTimeMillis());for (int i = 0; i < 10; i++) {key.append(randomStr.charAt(RandomUtils.nextInt(0, randomStr.length())));}if (StringUtils.isNotBlank(extension)) {if (extension.indexOf(".") == -1) {key.append(".");}key.append(extension);}return key.toString();}

后台处理需要注意下base64编码,我先把base64Str解码转为byte[]数组,因为项目使用阿里的OSSClient,上传过程还是比较简单。

整个流程做完了,感觉组件大大缩减了开发和调试时间。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

本文链接地址:https://www.jiuchutong.com/zhishi/310392.html 转载请保留说明!

上一篇:js中变量对象如何理解(js变量作用范围)

下一篇:关于安装完vue脚手架后找不到vue问题(怎么安装vue-cli脚手架)

  • 小米平板5pro怎么设置语音唤醒(小米平板5pro怎么开机)

    小米平板5pro怎么设置语音唤醒(小米平板5pro怎么开机)

  • 小米手表color2怎么关闭心率监测(小米手表color2怎么下载音乐)

    小米手表color2怎么关闭心率监测(小米手表color2怎么下载音乐)

  • 华为nova4怎么设置软件密码(华为nova4怎么设置微信加密)

    华为nova4怎么设置软件密码(华为nova4怎么设置微信加密)

  • 微信在新手机登录以前的聊天记录可以恢复吗(微信在新手机登录了 旧手机还能登录吗)

    微信在新手机登录以前的聊天记录可以恢复吗(微信在新手机登录了 旧手机还能登录吗)

  • iphone11和max区别(苹果11和max哪个更值得买)

    iphone11和max区别(苹果11和max哪个更值得买)

  • 怎么去掉抖音水印(怎么去掉抖音水印保存图片)

    怎么去掉抖音水印(怎么去掉抖音水印保存图片)

  • 苹果手机屏幕变色了怎么设置回来(苹果手机屏幕变黄色怎么调回来)

    苹果手机屏幕变色了怎么设置回来(苹果手机屏幕变黄色怎么调回来)

  • 麒麟990和麒麟820性能差距有多大(麒麟990和麒麟820哪个好)

    麒麟990和麒麟820性能差距有多大(麒麟990和麒麟820哪个好)

  • 手机发热是电池原因吗(手机发热是电池问题吗)

    手机发热是电池原因吗(手机发热是电池问题吗)

  • 微信没有删除好友却没有了(微信没有删除好友怎么不存在了)

    微信没有删除好友却没有了(微信没有删除好友怎么不存在了)

  • ios12黑暗模式怎么设置(ios12.4.1怎么设置黑暗模式)

    ios12黑暗模式怎么设置(ios12.4.1怎么设置黑暗模式)

  • 微信拉黑后恢复会有提醒吗(微信拉黑后恢复了能看到朋友圈吗)

    微信拉黑后恢复会有提醒吗(微信拉黑后恢复了能看到朋友圈吗)

  • 滴滴账号封禁有什么办法可以解决(滴滴账号封禁可以重新注册吗)

    滴滴账号封禁有什么办法可以解决(滴滴账号封禁可以重新注册吗)

  • 手机换了电池后还会和新的一样吗(手机换了电池后盖壳有缝隙会有隐患吗)

    手机换了电池后还会和新的一样吗(手机换了电池后盖壳有缝隙会有隐患吗)

  • vivox30pro什么处理器(vivox30pro测评视频)

    vivox30pro什么处理器(vivox30pro测评视频)

  • ipados 13.1如何分屏(ipados13.7怎么分屏)

    ipados 13.1如何分屏(ipados13.7怎么分屏)

  • 数字电视可以连无线吗(数字电视可以连接蓝牙耳机吗)

    数字电视可以连无线吗(数字电视可以连接蓝牙耳机吗)

  • soul怎么查看访问记录(soul怎么查看访客)

    soul怎么查看访问记录(soul怎么查看访客)

  • 苹果电池健康度剩余多少就该换了(苹果电池健康度75%要换吗)

    苹果电池健康度剩余多少就该换了(苹果电池健康度75%要换吗)

  • 怎么恢复手机电话图标(怎么恢复手机电池健康)

    怎么恢复手机电话图标(怎么恢复手机电池健康)

  • 荣耀10跑分安兔兔多少

    荣耀10跑分安兔兔多少

  • php static的三种使用方法(php static变量)

    php static的三种使用方法(php static变量)

  • 织梦文章添加字段填栏目id,内容页嵌套调用字段里的栏目文章(织梦自定义字段)

    织梦文章添加字段填栏目id,内容页嵌套调用字段里的栏目文章(织梦自定义字段)

  • 购销合同印花税按70%
  • 餐饮业购买的油类有哪些
  • 个人所得税租赁费的计算
  • 专票当月认证后什么时候抵扣
  • 企业季度预缴所得税怎么账务处理
  • 资产负债表中无形资产是原值还是净值
  • 库存商品结转成本的金额怎么计算
  • 18年补交17年城建税会计分录
  • 发票跨月还能重开吗
  • 增值税进项税额是什么意思
  • 不增税、免税、零税率的差异
  • 收到退印花税款怎么入账
  • 预缴企业所得税是含税还是不含税
  • 非公司车辆的使用费如何入账?
  • 收到运费怎么做账
  • 普通发票上个月的怎么作废
  • 增资印花税税目
  • 鸿蒙系统控制中心
  • mac怎么连接蓝牙鼠标
  • 社保会计科目怎么做账
  • 如何使用php
  • 减半征收所得税的有哪些
  • PHP:oci_field_is_null()的用法_Oracle函数
  • 核定企业应税收怎么算
  • 有形动产融资租赁税率是多少
  • 石榴石的功效与作用价值
  • 药品生产企业应建立
  • 金银首饰零售业必须为一般纳税人吗
  • 会计月末账务处理流程图
  • php保存远程图片
  • php防止抓包
  • 超图的应用举例
  • 结转制造费用的账务处理
  • php代码用什么工具
  • 雷达信号pri
  • “oracle”
  • 可供出售债权投资
  • 股票收益缴纳个人所得税吗
  • 个税各项减扣标准金额
  • 房产税的租金收入按什么计算的
  • 计提并缴纳个税分录
  • 不能抵扣的进项税转出账务处理
  • mongodb createindex
  • 未实际支付的成本能否列支
  • 企业所得税的营业成本怎么填
  • 小规模第一次申报流程
  • 税控服务费属于增值税减免费?
  • 融资购入的固定资产如何记账
  • 子公司没有收入,只有费用如何企业所得税汇算清缴
  • 水利建设基金的税率
  • 存货周转率多少算低
  • 一般纳税人增值税减免政策2023
  • 关于新企业所得税法说法正确的是
  • 免税收入啥意思
  • 物业费是否需要物价局备案
  • 收到赠送的东西,并给员工自用,怎么做账
  • 销售预算的重要性
  • 会计凭证,报告怎么做
  • 房地产企业会计分录
  • mysql如何优化性能
  • win2008远程桌面闪退
  • win8系统本地连接在哪
  • linux安装编译工具
  • win8任务管理器打不开怎么办
  • win8安全和维护在哪
  • linux 查找语句
  • tplinkwr740n设置
  • perl常用函数
  • android 生成图片
  • 进入cmd命令
  • 欢迎使用天翼智能网关
  • shell脚本clear
  • unity旋转角度范围限制
  • JQuery之proxy实现绑定代理方法
  • jQuery EasyUI Pagination实现分页的常用方法
  • 财务报表怎么填写
  • 烟叶收购价款
  • 税务局 周六
  • 国税软件下载
  • 我国现行消费税在生产环节征收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设