位置: 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脚手架)

  • 华为手环7有麦克风吗(华为手环能发声吗)

    华为手环7有麦克风吗(华为手环能发声吗)

  • 腾讯会议怎么加入别人的预定会议(腾讯会议怎么加微信好友)

    腾讯会议怎么加入别人的预定会议(腾讯会议怎么加微信好友)

  • 怎么把wps转换成word(怎么把wps转换成微软)

    怎么把wps转换成word(怎么把wps转换成微软)

  • 消息已发出但被对方拒收是拉黑还是删除(消息已发出但被对方拒收了是被删除好友了吗)

    消息已发出但被对方拒收是拉黑还是删除(消息已发出但被对方拒收了是被删除好友了吗)

  • 手机的辅助触控打开的怎么没有显示呢(手机的辅助触控怎么用)

    手机的辅助触控打开的怎么没有显示呢(手机的辅助触控怎么用)

  • 笔记本电脑自动右键怎么解决(笔记本电脑自动修复不了开不了机怎么办)

    笔记本电脑自动右键怎么解决(笔记本电脑自动修复不了开不了机怎么办)

  • 华为nova7拍照模糊(华为nova7拍照模式的小文子不见了)

    华为nova7拍照模糊(华为nova7拍照模式的小文子不见了)

  • 下了订单怎么退大王卡(下单后怎么退单)

    下了订单怎么退大王卡(下单后怎么退单)

  • 路由器可以直接插网线吗(路由器可以直接拔掉电源吗)

    路由器可以直接插网线吗(路由器可以直接拔掉电源吗)

  • tplink重置没有网了怎么办(tplink重设后没有网络)

    tplink重置没有网了怎么办(tplink重设后没有网络)

  • 华为流量限速怎么解除(华为流量限速怎么设置)

    华为流量限速怎么解除(华为流量限速怎么设置)

  • 模拟摄像头和数字摄像头的区别(模拟摄像头和数字摄像头接线区别)

    模拟摄像头和数字摄像头的区别(模拟摄像头和数字摄像头接线区别)

  • 快手直播间被警告B类违规有什么影响吗(快手直播间警告提示)

    快手直播间被警告B类违规有什么影响吗(快手直播间警告提示)

  • 微信运动里的好友不见了是怎么回事(微信运动里的好友删除了怎么添加)

    微信运动里的好友不见了是怎么回事(微信运动里的好友删除了怎么添加)

  • 性能tps是什么意思(tps 性能指标)

    性能tps是什么意思(tps 性能指标)

  • 手机一亮一暗怎么回事(手机屏幕一亮一暗)

    手机一亮一暗怎么回事(手机屏幕一亮一暗)

  • 电脑主机声音大嗡嗡响是怎么回事(电脑主机声音大嗡嗡响显示器黑屏)

    电脑主机声音大嗡嗡响是怎么回事(电脑主机声音大嗡嗡响显示器黑屏)

  • 华为手机是什么接口(华为手机是什么版本)

    华为手机是什么接口(华为手机是什么版本)

  • 抖音简历一天可以改多少次(抖音简历一天可以发几张)

    抖音简历一天可以改多少次(抖音简历一天可以发几张)

  • 苹果漏液能修复吗(苹果漏液修复大概要多久)

    苹果漏液能修复吗(苹果漏液修复大概要多久)

  • 手机怎么把图片调成反色(手机怎么把图片嵌入到另一张图片)

    手机怎么把图片调成反色(手机怎么把图片嵌入到另一张图片)

  • 美拍如何取消关注的人(美拍会员业务怎么取消)

    美拍如何取消关注的人(美拍会员业务怎么取消)

  • nl命令-显示文件内容及行号(用命令ls-al显示出文件ff)

    nl命令-显示文件内容及行号(用命令ls-al显示出文件ff)

  • 前端学习笔记(一)——HTML表格(table、tr、td、th、thead、tbody、tfoot标签)(前端必学)

    前端学习笔记(一)——HTML表格(table、tr、td、th、thead、tbody、tfoot标签)(前端必学)

  • 税收要素的灵魂
  • 外购的商品用于生产
  • 销售成本是负债吗
  • 购进货物未取得增值税专用发票可以抵扣进项税额吗
  • 美容行业如何做活动
  • 企业所得税报税日期
  • 支付员工费用报销账务处理
  • 公司净资产减少
  • 不动产出租需要缴纳哪些税
  • 房产税计税依据含税还是不含税
  • 汇算清缴业务招待费调整分录
  • 税率变化递延所得税资产如何调整
  • 转让土地及地上建筑物
  • 互联网企业资产负债表特征
  • 开票系统维护费计入什么科目
  • 不同税率的依据
  • 酒店式公寓配套服务包括哪些
  • 列入工资的补贴是什么
  • 已做了进项的发票金额错了怎么处理
  • 资产总额是资产负债表中的哪个数
  • 分期收款销售的商品属于存货吗
  • 股东认缴和实缴不一致
  • 应付工资薪酬期末应该为0吗
  • 贸易公司成本怎么计算
  • 金税卡服务费抵扣政策
  • PHP:xml_set_notation_decl_handler()的用法_XML解析器函数
  • php二维数组添加数据
  • 鸿蒙系统怎么安装电脑
  • linux网卡lo
  • php扩展开发参考手册
  • 报表重分类和不重分类
  • php加减
  • 其他业务收入负数坐在贷方
  • 什么叫相机标定
  • python怎么求列表里的和
  • 进项税加计抵减最新政策2023
  • ps抠图怎样
  • 银行账户收费开什么发票
  • python中排序
  • 中间人拿回扣是什么行为
  • 主营业务成本结转本年利润会计分录
  • 企业回购本公司股票会导致所有者权益增加
  • 营改增后建筑企业财务核算
  • 国家税务总局金税四期
  • 公司买的茶叶怎么入账
  • 企业支付的佣金计算多少税率呢
  • 联通里的话费可以拿来干嘛
  • 复利和年金的区别通俗易懂的
  • 税费多一分钱怎么调回来?
  • 企业购置生产要素所引起的本钱炜
  • 企业工会经费计提比例
  • 营业执照以外的算无证经营吗
  • 费用包含但不限于
  • 报销如果没有发票怎么补救
  • 社保费跟工资有关系吗
  • 明细分类账有哪三种
  • sql中的where in
  • mysql1194
  • centos 6.6安装教程
  • mac系统怎么查看
  • egui.exe是什么进程
  • linux操作系统b
  • windows 10预览版
  • Linux系统开源VPN Openvpn进程异常退出解决方法
  • js正则用法
  • javascript总结笔记
  • nodejs 导出excel
  • jQuery插件ajaxFileUpload使用实例解析
  • android 左右滑动 库
  • linux如何查看当前shell
  • node react vue
  • android入门视频教程
  • 开发 工具
  • 安卓手机管家
  • 又一枚精彩的弹幕效果jQuery实现
  • 安卓通知栏管理工具
  • 车船税完税证明开具如何开具
  • 新疆办房产证需要多久能拿证
  • 个人所得税app可以更改电话号码吗
  • 亿企代账和云账房哪个好用?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设