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

  • word怎么画一条横线(word怎么画一条虚线)

    word怎么画一条横线(word怎么画一条虚线)

  • 智能机怎么省电(智能机怎么刷机)(手机怎么样省电功能)

    智能机怎么省电(智能机怎么刷机)(手机怎么样省电功能)

  • 闪迪u盘很烫是什么情况(闪迪u盘发热很厉害)

    闪迪u盘很烫是什么情况(闪迪u盘发热很厉害)

  • 视频暂时不能查看(视频暂时不能查询怎么办)

    视频暂时不能查看(视频暂时不能查询怎么办)

  • 亚马逊账户关联几天能查到(亚马逊账户关联怎么申诉)

    亚马逊账户关联几天能查到(亚马逊账户关联怎么申诉)

  • 华为p40下巴多少毫米(华为p40下巴宽度)

    华为p40下巴多少毫米(华为p40下巴宽度)

  • 苹果充电器充了一会就停了(苹果充电器充了一下就不充了)

    苹果充电器充了一会就停了(苹果充电器充了一下就不充了)

  • 苹果屏幕碎了在保修范围吗(苹果屏幕碎了在哪里修)

    苹果屏幕碎了在保修范围吗(苹果屏幕碎了在哪里修)

  • 手机停机收不到验证码怎么办(手机停机收不到验证码怎么登录)

    手机停机收不到验证码怎么办(手机停机收不到验证码怎么登录)

  • qq空间标签发了不显示(qq空间标签发了别人为什么看不到)

    qq空间标签发了不显示(qq空间标签发了别人为什么看不到)

  • 什么是png格式(qq截图为什么是png格式)

    什么是png格式(qq截图为什么是png格式)

  • prefetch是什么文件夹(prefill是什么意思)

    prefetch是什么文件夹(prefill是什么意思)

  • 广域网和局域网的划分(广域网和局域网的英文缩写分别是)

    广域网和局域网的划分(广域网和局域网的英文缩写分别是)

  • iphone8支持3dtouch吗(IPhone8支持快充吗)

    iphone8支持3dtouch吗(IPhone8支持快充吗)

  • 大二芯和大三芯的主要用途(大二芯和大三芯怎么区分)

    大二芯和大三芯的主要用途(大二芯和大三芯怎么区分)

  • 苹果8p满电能用多久(苹果8p充满电能玩多久)

    苹果8p满电能用多久(苹果8p充满电能玩多久)

  • 华为手机智慧视觉在哪里开启(华为手机智慧视觉怎么放在桌面上)

    华为手机智慧视觉在哪里开启(华为手机智慧视觉怎么放在桌面上)

  • 手机本身内存小怎么办(手机内存很小)

    手机本身内存小怎么办(手机内存很小)

  • 黑鲨2屏幕分辨率多少(黑鲨2pro屏幕分辨率)

    黑鲨2屏幕分辨率多少(黑鲨2pro屏幕分辨率)

  • 抖音私信一天限制多少条(抖音私信一天最多可以私信多少人)

    抖音私信一天限制多少条(抖音私信一天最多可以私信多少人)

  • soul拉黑对方还能看我的瞬间吗(soul拉黑对方还能看到我上线吗)

    soul拉黑对方还能看我的瞬间吗(soul拉黑对方还能看到我上线吗)

  • 小米cc9的呼吸灯为什么不亮(小米cc9呼吸灯如何设置时间)

    小米cc9的呼吸灯为什么不亮(小米cc9呼吸灯如何设置时间)

  • 钉钉截图会被知道吗(钉钉截图会被知道地址吗)

    钉钉截图会被知道吗(钉钉截图会被知道地址吗)

  • 朋友圈怎样去掉双小人(朋友圈怎样去掉一分钟)

    朋友圈怎样去掉双小人(朋友圈怎样去掉一分钟)

  • 闪电盒子怎么解除绑定(闪电盒子自刷教程)

    闪电盒子怎么解除绑定(闪电盒子自刷教程)

  • iphone图片格式怎么改(iphone图片的格式)

    iphone图片格式怎么改(iphone图片的格式)

  • 苹果勿扰模式关不了(苹果勿扰模式关闭了怎么还打不进来电话)

    苹果勿扰模式关不了(苹果勿扰模式关闭了怎么还打不进来电话)

  • 这是我见过最牛逼的滑动加载前端框架(这是我见过最牛的人英语)

    这是我见过最牛逼的滑动加载前端框架(这是我见过最牛的人英语)

  • 酒店收入是以当月入账时间为准吗
  • 一般纳税人购销合同印花税计税依据
  • 非财政补助结余分配期末有余额吗
  • 用excel怎么制作思维导图
  • 非盈利组织是什么
  • 财政拨付的研发费用
  • 销售产品结转成本怎么算
  • 库存方面的会计是做什么的
  • 如果增值税发票丢了好的怎么办有谁交罚熬一
  • 进项税额一直大于销项税额
  • 园林绿化苗木增值税抵扣税率是多少?
  • 电子钥匙的发票怎么开
  • 行邮税的税率档次
  • 个人出租房屋税率表2023年
  • 公司间借款计入什么科目
  • 外购的货物用于集体福利企业所得税
  • 注册资本变更需要去税务局吗
  • 零申报还需要交税吗
  • 公司接受安全罚款的账务处理
  • 行政事业单位会计科目一览表
  • 跨年度残保金退税怎么算
  • 无形资产的相关税费包括增值税吗
  • 应交税费留底增值税
  • 在win7中怎么安转只兼容win10的软件
  • 盈亏余额
  • 华为鸿蒙harmonyos官网4.0升级
  • yii2.0实现验证用户名与邮箱功能
  • 文件夹字体怎么变大
  • 0x0000001e蓝屏代码的含义
  • php字符转换成数字
  • pacis.exe - pacis是什么进程 有什么用
  • 万年青的养殖方法和注意事项盆栽
  • 金融机构拆出资金的最长期限
  • 特殊性税务处理的条件
  • 对于企业已经入账而银行尚未入账
  • phpwhile用法
  • 递延所得税资产和负债怎么理解
  • java基础教程
  • 员工报销的差旅费属于什么科目
  • vue 登陆
  • create_proc_entry
  • 工会经费,残保金,会计分录
  • 个税系统有什么用
  • 公账转给员工工资
  • 递延收益期限
  • 织梦使用教程
  • 装货费用
  • sql语句求中位数
  • 个人所得税完整申报流程
  • 筹建期的收入要交企业所得税吗
  • 无法收回的款项
  • 经营费用属于什么类科目
  • 工商年报和税务年报有什么区别
  • 跨年度未开发票第二年如何做确认收入?
  • 进口关税如何交
  • 买二手设备需要签合同吗
  • 贴现收到票据时会计分录
  • 水利建设基金缴纳增值税开始缴纳
  • 长期应付款涉及哪些业务,应如何进行核算
  • 内账会计工作职责和工作流程
  • sqlserver获取当天零点时间
  • 老生常谈啥意思
  • u盘界面可以设置背景吗
  • red hat linux怎么用
  • linux me
  • 苹果电脑怎么关掉已经打开的页面
  • win8系统怎么到桌面
  • linux 的ll
  • win7系统每次关机都安装更新
  • 写出perl中最常见4种控制流
  • perl里怎么对数组实现一次遍历
  • unity怎么用
  • 基于android的app
  • 用来检测程序小错误的测试方法
  • 批处理 删除指定文件
  • nodejs 写文件
  • 使用粗盐热敷十大危害
  • 个体户税务注销
  • 一般纳税人企业所得税5%还是25%
  • 一般纳税人认定书
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设