位置: IT常识 - 正文

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

发布时间:2024-01-26
这篇文章主要介绍了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脚手架)

  • php网页设计作业运营用户运营是指推动有效线索和交易转化的一系列动作

    php网页设计作业运营用户运营是指推动有效线索和交易转化的一系列动作

  • 如何利用博客评论来做好网站推广(博客文章的评价指标)

    如何利用博客评论来做好网站推广(博客文章的评价指标)

  • 总结商城运营推广技巧(商城运营方案包含内容)

    总结商城运营推广技巧(商城运营方案包含内容)

  • 苹果手机来电时怎么开启声音和振动(苹果手机来电时怎么静音)

    苹果手机来电时怎么开启声音和振动(苹果手机来电时怎么静音)

  • 拼多多怎么删除直播间(拼多多怎么删除订单记录)

    拼多多怎么删除直播间(拼多多怎么删除订单记录)

  • 联发科g90t对比骁龙730(联发科g90t对比骁龙680)

    联发科g90t对比骁龙730(联发科g90t对比骁龙680)

  • 小米折叠手机什么时候上市(小米折叠手机什么时候发布)

    小米折叠手机什么时候上市(小米折叠手机什么时候发布)

  • 电话拉黑名单了还可以发信息吗(电话拉黑名单了信息对方能收到吗)

    电话拉黑名单了还可以发信息吗(电话拉黑名单了信息对方能收到吗)

  • 淘宝注销后再注册是新人吗(淘宝注销后再注册签到会重置吗)

    淘宝注销后再注册是新人吗(淘宝注销后再注册签到会重置吗)

  • 微信不小心退出登录了怎么办(微信不小心退出了,忘记密码怎么登录)

    微信不小心退出登录了怎么办(微信不小心退出了,忘记密码怎么登录)

  • 荣耀v10怎么清除后台运行(荣耀v10怎么清除缓存)

    荣耀v10怎么清除后台运行(荣耀v10怎么清除缓存)

  • ppt是什么软件(ppt属于什么软件)

    ppt是什么软件(ppt属于什么软件)

  • 苹果平板怎么隐藏游戏(苹果平板怎么隐藏相册照片)

    苹果平板怎么隐藏游戏(苹果平板怎么隐藏相册照片)

  • 微信可以用面部支付吗(微信用面部解锁)

    微信可以用面部支付吗(微信用面部解锁)

  • 华为mate20pro不带指纹吗(华为mate20pro不带屏幕指纹解锁)

    华为mate20pro不带指纹吗(华为mate20pro不带屏幕指纹解锁)

  • 安装包怎么发给别人(安装包怎么发给好友手机)

    安装包怎么发给别人(安装包怎么发给好友手机)

  • oppoa11x怎么连接电脑(oppoa11x怎么连接投屏器)

    oppoa11x怎么连接电脑(oppoa11x怎么连接投屏器)

  • 苹果11会发热吗(苹果11容不容易发热)

    苹果11会发热吗(苹果11容不容易发热)

  • 华为mate30与mate30pro的区别(华为mate30与mate305g区别外型)

    华为mate30与mate30pro的区别(华为mate30与mate305g区别外型)

  • 苹果x音响怎么一个响(苹果音响怎么设置方法)

    苹果x音响怎么一个响(苹果音响怎么设置方法)

  • 如何长截图聊天记录(怎么截图长聊天)

    如何长截图聊天记录(怎么截图长聊天)

  • 小米怎么看屏幕使用时间(小米怎么看屏幕使用记录)

    小米怎么看屏幕使用时间(小米怎么看屏幕使用记录)

  • 闲鱼怎么看自己夺宝商品(闲鱼怎么看自己的信用度)

    闲鱼怎么看自己夺宝商品(闲鱼怎么看自己的信用度)

  • Calanques de Piana岩层上的一个心形洞,法国科西嘉岛 (© joningall/Getty Images)

    Calanques de Piana岩层上的一个心形洞,法国科西嘉岛 (© joningall/Getty Images)

  • 科大讯飞语音识别SDK的ROS包修改(科大讯飞语音识别主要产品)

    科大讯飞语音识别SDK的ROS包修改(科大讯飞语音识别主要产品)

  • vue 同局域网访问不到的问题及解决

    vue 同局域网访问不到的问题及解决

  • 企业转出多交增值税吗
  • 税务硕士是什么学位类别
  • 税务登记管理办法2023
  • 出纳记账购进的货物
  • 小规模未开票收入如何填写申报表增值税
  • 刚成立的公司好不好
  • 白酒在哪个环节征收消费税
  • 建总账的注意事项
  • 领用包装物会计处理
  • 出口退税为0的产品明细
  • 民办中小学收费新政策
  • 进口原木的增值税率
  • 预提厂房租金
  • 防伪税控开具发票明细表
  • 为职工垫付的款项属于其他应收款吗
  • 普通发票跨月能入账吗
  • 增值税清卡失败f50006
  • 小规模无票收入后期开票怎么申报
  • 如何填写企业所得税
  • 建筑企业按什么确认收入
  • win10怎么查看电池健康度
  • vmware运行win10很卡怎么解决
  • mac qq音乐怎么下载mp3格式的音乐
  • linux系统怎么安装网卡驱动
  • 获得administer权限
  • php 回调函数
  • thinkphp表单提交
  • PHP:php_strip_whitespace()的用法_misc函数
  • php statement
  • 增值税税收类型有哪些
  • 前端css要掌握到什么程度
  • PHP:imageellipse()的用法_GD库图像处理函数
  • 国有控股企业改制
  • 新年快乐彝文怎么写
  • 分次预缴税额怎么算
  • php pdo连接mysql
  • 非同级财政拨款收入属于什么科目
  • 初级职称到中级职称需要上继续教育课吗
  • php qrcode生成二维码
  • 职工教育经费具体比例
  • 个税借方的含义
  • 实收资本资本公积印花税怎么申报
  • 织梦自定义字段
  • 一般纳税人资格证明在哪里查询
  • 合同权益如何进行转让
  • 一般纳税人暂未开具发票
  • 业务招待费报销制度及流程
  • 为什么合理损耗不计入成本
  • 畜类生产性生物资产计算折旧的最低年限
  • 上一年度所得税忘记计提了怎么办
  • 公司收到拆迁补偿金,于评估公司的区别
  • 技术服务费属于什么科目
  • 息税前利润怎么算出来的
  • 开办费的最新账务处理2021
  • 自建的固定资产折旧计入哪里
  • 不得抵扣的增值税计入
  • 购买原材料保险费分录
  • 现金退回没原始凭证咋办
  • 英语培训机构成人浦口区
  • mysql数据库完全备份
  • Win7旗舰版系统文件名称
  • win7任务管理器是灰色的
  • win7如何设置共享
  • win10用浏览器
  • CentOS(x86_64)下PHP安装memcache扩展问题解决方法分享
  • centos 6.6安装教程
  • 登录系统错误
  • windows xp 配置
  • win7系统插u盘没反应怎么办
  • windows to go教程
  • win10 自带
  • cocos2dx 2.2.2
  • linux source命令是什么
  • js 函数执行顺序
  • 如何使用jquery插件
  • android性能指标
  • 简易的python代码
  • js md5加密方法
  • gpu解码视频
  • javascript获取浏览器代理设置
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号