前端vue点击图片上传(带封装方法)

第一种

直接用,图片路径自己换一下

<template><view class="uPImg"><view class="Img">上传照片 :</view><view class="shangchuan"><view class="sc2" v-for="(item, index) in imgList" :key="index"><image class="del" @click="del(index)" src="../../../static/property/paymentUpload.png" mode=""></image><image class="Img3" :src="item" mode=""></image></view><view class="sc2" v-if="imgList.length < 3" @click="upload"><image class="sc3" src="../../../static/property/paymentUpload.png" mode=""></image></view></view></view>
</template><script>export default {data() {imgList: [],},methods {// 点击上传图片upload() {uni.chooseImage({count: 1, //默认9sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有sourceType: ['album'], //从相册选择loop: true,success: res => {console.log(res);if (res.tempFilePaths.length != 0) {this.imgList.push(res.tempFilePaths[0]);}console.log(JSON.stringify(res.tempFilePaths));var tempFilePaths = res.tempFilePaths;console.log(tempFilePaths);console.log(tempFilePaths[0]);uni.uploadFile({url: 'http://douzhuoqianshouba.xieenguoji.com/api/ajax/upload',filePath: tempFilePaths[0],name: 'file',success: uploadFileRes => {console.log('上传图片', JSON.parse(uploadFileRes.data));},fail(err) {console.log(err);}});}});},// // 删除图片del(index) {this.imgList.splice(index, 1);console.log(this.imgList);},}}
</script><style>
</style>

第二种封装方法

封装组件upload.vue

直接用,图片路径自己换一下

<template><view></view>
</template><script>
export default {data() {return {/*需要返回的图片*/imageList:[]};},onLoad() {},props:['num'],mounted() {this.chooseImageFunc();},methods: {/*打开相机或者相册,选择图片*/chooseImageFunc() {let self=this;uni.chooseImage({count: self.$props.num || 9, //默认9sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有sourceType: ['album', 'camera'], //从相册选择success: function(res) {self.uploadFile(res.tempFilePaths);},fail:function(res){self.$emit('getImgs',null);},complete:function(res){}});},/*上传图片*/uploadFile: function(tempList) {let self = this;let i = 0;let img_length=tempList.length;let params = {token: uni.getStorageSync('token'),app_id: self.getAppId()};uni.showLoading({title: '图片上传中'});tempList.forEach(function(filePath, fileKey) {uni.uploadFile({url: self.websiteUrl + '/index.php?s=/api/file.upload/image',filePath: filePath,name: 'iFile',formData: params,success: function(res) {let result = typeof res.data === 'object' ? res.data : JSON.parse(res.data);if (result.code === 1) {self.imageList.push(result.data);}else{self.showError(result.msg);}},complete: function() {i++;if (img_length === i) {uni.hideLoading();// 所有文件上传完成self.$emit('getImgs',self.imageList);}}});});}}
};
</script><style></style>

使用组件

引入上面upload.vue

<template><view class=" payment_right"><!-- 	<image src="../../../static/property/paymentUpload.png" mode=""></image><!-- 封装完整的上传图片start --><view class="uploadBox d-s-e"><view class="item" v-for="(imgs,img_num) in images" :key="img_num" @click="deleteFunc(imgs)"><image :src="imgs.file_path || imgs" mode="aspectFit"></image></view><view class="item d-c-c d-stretch" v-if="images.length<1"><!-- 			<view class="upload-btn d-c-c d-c flex-1" @click="openUpload()"><image src="../../../static/property/paymentUpload.png"></image></view> --><view class="  flex-1" @click="openUpload()"><image width="100px" height="100px" src="../../../static/property/paymentUpload.png"></image></view></view></view><Upload v-if="isUpload" @getImgs="getImgsFunc"></Upload><!-- 封装完整的上传图片end --></view>
</template><script>import Upload from '@/components/upload/upload.vue';export default {components: {Upload,},data() {// 封装的完整的上传图片startimages: [],isUpload: false,// 封装的完整的上传图片end},methods {// 封装的完整的上传图片start// 上传微信收款码 删除图片deleteFunc(e) {this.images.splice(e, 1);},/*获取图片*/getImgsFunc(e) {let self = this;self.isUpload = false;if (e && typeof(e) != 'undefined') {let this_length = self.images.length,upload_length = e.length;if (this_length + upload_length < 2) {self.images = self.images.concat(e);} else {let leng = 1 - this_length;for (let i = 0; i < leng; i++) {self.images.push(e[i]);}}}this.pay_image = e[0].file_path// console.log(e, '获取所有图片');console.log(e[0].file_path, '图片路径');},/*上传*/openUpload() {this.isUpload = true;// console.log('打开');},// 封装完整的上传图片end}}
</script><style lang="scss" scoped>.payment_right {// width: 440rpx;// height: 220rpx;.uploadBox .item {width: 220rpx;height: 220rpx;}}
</style>

第三种实战

图片

请添加图片描述

代码

<template><view class="box"><!-- 图片上传 --><view class="bindingBox"><view class=" payment_rightSSS"><view class="shangchuan"><view class="sc2" v-for="(item, index) in imgList" :key="index"><view @click="del(index)" class="dells"></view><img class="shangchuan_img" :src="item" mode="aspectFit"></img></view><view class="sc2 gray6 imgUploads" v-if="imgList.length < 1" @click="getUpload"><image src="../../../../static/property/paymentUpload.png"></image></view></view></view></view><div class="buttonBox"><view class="bindingModifyBtn" @click="getUpload">修改</view><view class="bindingSubmitBtn" @click="bankSubmit">提交</view></div></view>
</template><script>export default {components: {},data() {return {imgList: [],}},onShow() {},mounted() {},onLoad() {},methods: {// 打开相册getUpload() {let self = this;uni.chooseImage({count: 1, //默认9sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有sourceType: ['album'], //从相册选择loop: true,success: function(res) {self.uploadFile(res.tempFilePaths);// console.log(res,'路径啊啊啊啊啊');},});},/*上传图片 */uploadFile: function(tempList) {let self = this;let i = 0;let img_length = tempList.length;let params = {token: uni.getStorageSync('token'),app_id: self.getAppId()};uni.showLoading({title: '图片上传中'});tempList.forEach(function(filePath, fileKey) {uni.uploadFile({url: self.websiteUrl + '/index.php?s=/api/file.upload/image',filePath: filePath,name: 'iFile',formData: params,success: function(res) {// let result = typeof res.data === 'object' ? res.data :// 	JSON.parse(res.data);// if (result.code === 1) {// 	self.imgList.push(result.data);// } else {// 	self.showError(result.msg);// }console.log(res);let list = JSON.parse(res.data);let filePath = list.data.file_path;// 图片赋值到里面// self.imgList.push(list.data.file_path);// uniapp图片上传判断一个数组长度空上传,不为空修改if (self.imgList.length == []) {self.imgList.push(list.data.file_path);} else if (self.imgList.length !== []) {self.imgList = [list.data.file_path]}// console.log(list.data.file_path, '路径路径路径路径');// console.log(self.imgList, 'datadataself.imgList数据');},complete: function() {i++;if (img_length === i) {uni.hideLoading();// 所有文件上传完成// self.$emit('getImgs', self.imgList);self.imgList}}});});},// // 删除图片del(index) {this.imgList.splice(index, 1);uni.removeStorageSync('file_path');// console.log(this.imgList);},// 提交修改调用接口上传图片参数bankSubmit() {let self = this;if (self.imgList == 0) {uni.showToast({title: '请上传微信收款码',duration: 2000,icon: 'none'});return;}uni.showModal({title: '提示',content: '您确定提交吗?',success: function(o) {if (o.confirm) {uni.showLoading({title: '正在处理'});self._post('user.user/bindUserWithdrawData', {type: '1',// wx_code_pic:self.imgListwx_code_pic: self.imgList.join()},function(res) {uni.hideLoading();uni.showToast({title: '操作成功',duration: 2000,icon: 'success'});uni.setStorageSync('file_path', String(self.imgList));// 存本地// uni.setStorageSync('filePath', String(self.imgList));});}}});}},}
</script><style lang="scss" scoped>.bindingBox {// display: flex;// flex-direction: column;// padding: 0 32rpx;// box-sizing: border-box;// display: flex;// justify-content: space-between;// align-items: center;// padding: 30rpx 20rpx;// box-sizing: border-box;// font-size: 30rpx;background-color: #FFFFFF;.payment_rightSSS {// .uploadBox .item {// 	width: 220rpx;// 	height: 220rpx;// }display: flex;justify-content: center;align-items: center;.shangchuan {width: 300rpx;height: 300rpx;// border: 1rpx solid red;.sc2 {position: relative;// border: 1rpx solid lightseagreen;.shangchuan_img {// width: 200rpx;width: 300rpx;height: 300rpx;position: relative;// left: 52rpx;z-index: 9;}.dells {position: absolute;width: 100%;height: 100%;// border: 1rpx solid red;z-index: 10;}}.imgUploads {width: 300rpx;height: 300rpx;img {width: 100%;height: 100%;border: 1rpx solid deeppink;}}}}}.buttonBox {display: flex;justify-content: space-between;align-items: center;padding: 0 32rpx;margin: 100rpx auto;.bindingModifyBtn {background-color: red;width: 160px;height: 48px;line-height: 48px;opacity: 1;border-radius: 8px;border: none;font-size: 14px;color: #FFFFFF;text-align: center;}.bindingSubmitBtn {background-color: red;width: 160px;height: 48px;line-height: 48px;opacity: 1;border-radius: 8px;border: none;font-size: 14px;color: #FFFFFF;text-align: center;}}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/109682.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么要选择期权?开通期权有何益处?

相较于期货&#xff0c;期权的交易方式更为灵活多样&#xff0c;对标的期货市场也有较高的要求。据了解&#xff0c;在国际成熟的期权市场上&#xff0c;流动性和价格波动性是判断期货品种是否适合开展期权交易的两大关键因素&#xff0c;下文介绍为什么要选择期权&#xff1f;…

Redis 删除策略

文章目录 Redis 删除策略一、过期数据二、数据删除策略1、定时删除2、惰性删除3、定期删除4、删除策略对比 三、逐出算法 Redis 删除策略 一、过期数据 Redis是一种内存级数据库&#xff0c;所有数据均存放在内存中&#xff0c;内存中的数据可以通过TTL指令获取其状态 XX &a…

DataGrip 2023 年下载、安装教程、亲测可用

文章目录 前言1. 下载2. 安装3、DataGrip 常用操作4 推荐阅读 前言 DataGrip 是 JetBrains 发布的多引擎数据库环境&#xff0c;支持 MySQL 和 PostgreSQL&#xff0c;Microsoft SQL Server 和 Oracle&#xff0c;Sybase&#xff0c;DB2&#xff0c;SQLite&#xff0c;还有 Hy…

在SpringSecurity + SpringSession项目中如何实现当前在线用户的查询、剔除登录用户等操作

1、前言 在前一篇《在SpringBoot项目中整合SpringSession&#xff0c;基于Redis实现对Session的管理和事件监听》笔记中&#xff0c;已经实践了在SpringBoot SpringSecurity 项目中整合SpringSession&#xff0c;这里我们继续尝试如何统计当前在线用户&#xff0c;思路如下&am…

【Spatial-Temporal Action Localization(三)】论文阅读2018年

文章目录 1. AVA: A Video Dataset of Spatio-temporally Localized Atomic Visual Actions 时空局部原子视觉动作的视频数据集摘要和结论模型框架思考不足之处时间信息对于识别 AVA 类别有多重要&#xff1f;定位与识别相比有何挑战性&#xff1f;哪些类别具有挑战性&#xff…

排序算法-----插入排序

目录 前言&#xff1a; 插入排序 原理图 代码实现 分析总结 二分法插入排序 代码实现 前言&#xff1a; 嗨嗨^_^&#xff0c;米娜桑&#xff0c;今天我们继续学习排序算法中的插入排序&#xff0c;激不激动&#xff0c;兴不兴奋呢&#xff01;好了废话不多说&#xff0c;…

制作ubuntu18.04系统盘

文章目录 前言一、下载ubuntu18.04的iso文件二、制作u盘系统盘2、使用ultra来制作系统盘2.1、加载iso2.2、制作系统盘 前言 安装ubuntu18.04系统 一、下载ubuntu18.04的iso文件 打开下面的网址&#xff0c;找到自己需要的iso文件 https://releases.ubuntu.com/二、制作u盘系…

国家网络安全周 | 金融日,一起 get金融行业数据安全

2023国家网络安全宣传周 热度一直在持续&#xff01; 9月15日是国家网络安全宣传金融日。 目前随着国际形势愈发严峻&#xff0c;金融机构基础设施的全面数字化升级&#xff0c;带来了全新的安全问题。数据安全不单是技术问题&#xff0c;更是已经成为一个关系社会稳定发展的…

开源库源码分析:Okhttp源码分析(一)

开源库源码分析&#xff1a;OkHttp源码分析 导言 接下来就要开始分析一些常用开源库的源码了&#xff0c;作为最常用的网络请求库&#xff0c;OkHttp以其强大的功能深受Android开发者的喜爱&#xff08;比如说我&#xff09;&#xff0c;还有对该库进行二次封装而成的热门库&a…

无涯教程-JavaScript - COLUMNS函数

描述 COLUMNS函数返回数组或引用中的列数。 语法 COLUMNS (array)争论 Argument描述Required/OptionalarrayAn array or array formula, or a reference to a range of cells for which you want the number of Columns.Required Notes COLUMNS(1:1)返回Excel中的列数,即…

20230912在ubuntu18.04下使用pigz来提高tar命令压缩解压缩的速度

20230912在ubuntu18.04下使用pigz来提高tar命令压缩解压缩的速度 2023/9/15 22:19 https://blog.csdn.net/wb4916/article/details/128447298 20221226编译Toybrick的TB-RK3588X开发板的Android12系统2-SDK预处理 4、单线程压缩。 建议使用&#xff1a;pigz多线程压缩&#xf…

极光笔记 | 推送服务数据中心选择:合规性与传输效率的双重考量

随着全球化进程的深入&#xff0c;跨境数据传输与存储问题已经变得愈发重要。推送服务的数据中心节点选择不仅关乎数据访问速度和用户体验&#xff0c;同时也直接牵扯到数据合规性和安全保障。EngageLab Push深知这一点&#xff0c;为了满足更多国际客户和全球用户触达需求&…