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

  • iphone4s sim卡无效(iphone4s siri)(iphone4s显示sim卡无效)

    iphone4s sim卡无效(iphone4s siri)(iphone4s显示sim卡无效)

  • 苹果x的设备管理在哪里(苹果x的设备管理在哪里找)

    苹果x的设备管理在哪里(苹果x的设备管理在哪里找)

  • 腾讯的拼音怎么写的(腾讯的拼音怎么读)

    腾讯的拼音怎么写的(腾讯的拼音怎么读)

  • 手机为什么充不进电(手机为什么充不上电?怎么解决?vivo)

    手机为什么充不进电(手机为什么充不上电?怎么解决?vivo)

  • 苹果微信一直正在载入(苹果微信一直正在安装是怎么回事儿)

    苹果微信一直正在载入(苹果微信一直正在安装是怎么回事儿)

  • 对方朋友圈背景图没了(对方朋友圈背景是灰色的代表什么)

    对方朋友圈背景图没了(对方朋友圈背景是灰色的代表什么)

  • 云闪付直接卸载有影响吗(云闪付卸载了银行卡就解绑了吗)

    云闪付直接卸载有影响吗(云闪付卸载了银行卡就解绑了吗)

  • bilibili正式会员是永久吗(哔哩哔哩正式会员答题)

    bilibili正式会员是永久吗(哔哩哔哩正式会员答题)

  • 华为售后换屏是原装吗(华为售后换屏是什么流程)

    华为售后换屏是原装吗(华为售后换屏是什么流程)

  • qq声音开了为什么不响了(qq声音听不见怎么回事)

    qq声音开了为什么不响了(qq声音听不见怎么回事)

  • 微信删除不了好友(微信删除不了好友,显示操作频繁)

    微信删除不了好友(微信删除不了好友,显示操作频繁)

  • 红米note8pro可以插内存卡吗(红米note8pro可以玩原神吗)

    红米note8pro可以插内存卡吗(红米note8pro可以玩原神吗)

  • 开启wds是什么意思(wds模式是什么)

    开启wds是什么意思(wds模式是什么)

  • 华为手机儿童模式在哪

    华为手机儿童模式在哪

  • qq三代密保人脸识别取消了吗(qq人脸找密)

    qq三代密保人脸识别取消了吗(qq人脸找密)

  • 华为升降摄像头手机型号(华为升降摄像头手机)

    华为升降摄像头手机型号(华为升降摄像头手机)

  • 手机qq怎么图片文字一起发(手机qq怎么图片和文字一起发消息)

    手机qq怎么图片文字一起发(手机qq怎么图片和文字一起发消息)

  • 苹果x特效信息怎么发(苹果特效信息对方看的到吗)

    苹果x特效信息怎么发(苹果特效信息对方看的到吗)

  • iphone如何开个人热点(苹果手机个人怎么设置)

    iphone如何开个人热点(苹果手机个人怎么设置)

  • 三星a8s上市时间(三星a8s上市时间是哪年的)

    三星a8s上市时间(三星a8s上市时间是哪年的)

  • vivoy3怎么反向无线充电(vivo反向无线充电怎么开启)

    vivoy3怎么反向无线充电(vivo反向无线充电怎么开启)

  • oppor15照片删除后怎么恢复(oppo手机删除照片)

    oppor15照片删除后怎么恢复(oppo手机删除照片)

  • 任易屏怎么用(任易屏怎么用不了)

    任易屏怎么用(任易屏怎么用不了)

  • 如何远程重装系统并让电脑继续受控(怎么远程重装win10)

    如何远程重装系统并让电脑继续受控(怎么远程重装win10)

  • 期间费用明细表怎么填
  • 软件和硬件如何集合使用
  • 应付职工薪酬应发数
  • 收到政府土地补偿,用于种植农作物
  • 什么不属于损益类的会计项目
  • 其他应收款要做账吗
  • 房地产可抵扣的税有哪些
  • 个税身份验证不通过
  • 个税按照计提申报怎么调整
  • 应交增值税减免税款怎么结转
  • 网上公司报税流程图
  • 供应商租赁企业资质要求
  • 合伙企业工资薪金申报
  • 预收账款发货
  • 广告公司可以开维修费吗
  • 进口车关税怎么抵扣
  • 超出标准的公积金怎么交
  • 适用增值税简易计税的项目
  • 代销商品和代销商品款
  • 报销客户车费会计分录怎么写?
  • 建安企业收取管理费虚开怎么处理
  • 哪些业务可以进入共享服务中心
  • 三证合一后的税务登记证查询方法
  • win11dev预览修复工具
  • 转销坏账准备会影响账面余额吗
  • 个人所得税的减数为2000元,实行日期为
  • 销售返利计入什么费用
  • 无形资产的会计处理
  • vue项目部署上线 需要做哪些准备
  • 德国楚格峰一日游攻略
  • php读取数据库复选框数据
  • ensp综合实验配置
  • springboot集成clickhouse
  • gpt40
  • lxml&xpath一站式教学
  • lvs命令
  • 转账支票适用范围
  • phpcms怎么修改模板风格
  • 预收安装费的会计分录
  • 现金股利算负债吗
  • 销售后返现怎么算
  • 织梦怎么新建页面
  • 织梦安装完要删除哪个文件
  • 收到以前年度增值税退税账务处理怎么做账
  • 非独立核算门市部销售自产应税消费品
  • 内帐收入怎么确定
  • 企业会计凭证怎么写
  • 应收账款计提坏账比例
  • 银行利息回单怎么报账审核
  • 职工工资如何计算天数
  • 可供出售债权投资
  • 季节性移动的原因
  • 小规模纳税人利润如何缴税
  • 暂估应付账款余额调整
  • 不征税发票和零税率发票
  • 注册公司好麻烦
  • windows7创建虚拟桌面
  • linux不常用命令
  • 局域网 打印机 共享
  • bootcamp安装windows一直小白杠
  • ubuntu12安装教程
  • win10如何创建一个新的用户
  • linux ssh默认端口
  • kail Linux系统
  • macos unity
  • jsclass选择器
  • node返回html
  • github thanos
  • python字符串常用方法
  • Node.js node-schedule定时任务隔多少分钟执行一次的方法
  • 简要说明javascript的作用
  • 浅谈自己对教育的理解
  • jquery绑定onchange
  • shell bash sh
  • UNITE 2015 TAIPEI 五大系列重要議題搶鮮看!
  • android知识点大全
  • javascript中checkbox使用方法实例演示
  • 学费报销找学校哪个部门
  • 民办非企业需要办理税务登记吗
  • 为什么企业减少注册资金的原因
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设