微信小程序-上传多张图片加进度条(支持预览、删除)
2018-12-24
详情示例见:https://www.cnblogs.com/cisum/p/9564898.html
2018-12-29
组件下载见:https://www.cnblogs.com/cisum/p/10199507.html
index.js
1 data: { 2 list: '', 3 upload_picture_list: [] 4 }, 5 //选择图片方法 6 uploadpic: function (e) { 7 var that = this //获取上下文 8 var upload_picture_list = that.data.upload_picture_list 9 //选择图片 10 wx.chooseImage({ 11 count: 8, 12 sizeType: ['compressed'], 13 sourceType: ['album', 'camera'], 14 success: function (res) { 15 var tempFiles = res.tempFiles 16 //把选择的图片 添加到集合里 17 for (var i in tempFiles) { 18 tempFiles[i]['upload_percent'] = 0 19 tempFiles[i]['path_server'] = '' 20 upload_picture_list.push(tempFiles[i]) 21 } 22 //显示 23 that.setData({ 24 upload_picture_list: upload_picture_list, 25 }); 26 } 27 }) 28 }, 29 //点击上传事件 30 uploadimage: function () { 31 var page = this 32 var upload_picture_list = page.data.upload_picture_list 33 //循环把图片上传到服务器 并显示进度 34 for (var j in upload_picture_list) { 35 if (upload_picture_list[j]['upload_percent'] == 0) { //调用函数 36 app.util.upload_file_server(app.api.up_pic,page, upload_picture_list, j) 37 } 38 } 39 }, 40 41 // 删除图片 42 deleteImg: function(e) { 43 let upload_picture_list = this.data.upload_picture_list; 44 let index = e.currentTarget.dataset.index; 45 upload_picture_list.splice(index, 1); 46 this.setData({ 47 upload_picture_list: upload_picture_list 48 }); 49 },
1 //上传方法 2 function upload_file_server(url, that, upload_picture_list, j) { 3 //上传返回值 4 const upload_task = wx.uploadFile({ 5 // 模拟https 6 url: url, //需要用HTTPS,同时在微信公众平台后台添加服务器地址 7 filePath: upload_picture_list[j]['path'], //上传的文件本地地址 8 name: 'file', 9 formData: { 10 'num': j 11 }, 12 //附近数据,这里为路径 13 success: function (res) { 14 15 var data = JSON.parse(res.data); 16 // //字符串转化为JSON 17 if (data.Success == true) { 18 19 var filename = data.file //存储地址 显示 20 21 upload_picture_list[j]['path_server'] = filename 22 } else { 23 upload_picture_list[j]['path_server'] = filename 24 } 25 that.setData({ 26 upload_picture_list: upload_picture_list 27 }); 28 29 wx.setStorageSync('imgs', upload_picture_list); 30 } 31 }) 32 //上传 进度方法 33 upload_task.onProgressUpdate((res) => { 34 upload_picture_list[j]['upload_percent'] = res.progress 35 that.setData({ 36 upload_picture_list: upload_picture_list 37 }); 38 }); 39 }
index.wxml
1 <view class="picture_list"> 2 3 <view wx:for="{{upload_picture_list}}" class="picture_item" wx:key="{{index}}"> 4 <image wx:if="{{item.upload_percent < 100}}" src="{{item.path}}" mode="aspectFill"></image> 5 <image wx:if="{{item.upload_percent == 100}}" src="{{item.path_server}}" mode="aspectFill"></image> 6 <view class="upload_progress" wx:if="{{item.upload_percent < 100}}" data-index="{{index}}" bindtap="previewImg">{{item.upload_percent}}%</view> 7 <text class='del' bindtap='deleteImg' data-src='{{image}}' style='display:{{isDel}}' data-index="{{index}}">×</text> 8 </view> 9 10 <view class='picture_item'> 11 <view class="add-image" bindtap='uploadpic'> 12 <text>+</text> 13 </view> 14 </view> 15 </view> 16 <button bindtap='uploadimage' class='yes-upload'>确定上传</button>
index.wxss
1 .add-image, .up-pic image { 2 margin-top: 2%; 3 margin-left: 2%; 4 width: 150rpx; 5 height: 150rpx; 6 color: #ddd; 7 font-size: 144rpx; 8 line-height: 95%; 9 text-align: center; 10 background-color: #fff; 11 cursor: pointer; 12 border-radius: 10rpx; 13 } 14 15 .picture_list { 16 padding: 20rpx; 17 margin-left: 12%; 18 display: flex; 19 flex-direction: row; 20 flex-wrap: wrap; 21 justify-content: flex-start; 22 align-items: flex-start; 23 align-content: flex-start; 24 } 25 26 .picture_item { 27 margin: 10px; 28 margin-left: 0; 29 position: relative; 30 width: 160rpx; 31 height: 160rpx; 32 } 33 34 .picture_item .del { 35 position: absolute; 36 top: -11rpx; 37 right: -11rpx; 38 color: #fff; 39 border-radius: 50%; 40 width: 40rpx; 41 height: 40rpx; 42 z-index: 2; 43 line-height: 35rpx; 44 text-align: center; 45 background-color: #f00; 46 } 47 48 .upload_progress { 49 position: absolute; 50 top: 0; 51 left: 0; 52 opacity: 0.7; 53 border-radius: 8rpx; 54 background-color: #000; 55 color: #fff; 56 width: 160rpx; 57 height: 160rpx; 58 text-align: center; 59 line-height: 160rpx; 60 font-size: 12px; 61 } 62 63 .picture_item image { 64 width: 160rpx; 65 height: 160rpx; 66 }
app.api.x :是封装的各类请求url地址
app.util.x :是封装的函数,关于使用
1. 先util添加方法
2. app.js
3. 页面上调用,需要声明
后端php代码
<?phpclass Imageadmin{public function imageupload(){//名字获取$wxid=$_POST["num"];//时间获取$diaryTime=$_POST["datetime"];//获取日期$date = $_POST["date"];$a = substr($_FILES['file']['type'],6);//获取图片后缀//$a = strstr( $_FILES['file']['type'], '/');$file_name=$date.'\\'.$diaryTime.'_'.$wxid.'.'.$a;//拼装存储地址path$file_name1=$date.'/'.$diaryTime.'_'.$wxid.'.'.$a;//拼装图片浏览path$path = "D:\www\File\\".$file_name;//存储path$dir = iconv("UTF-8", "GBK","D:\www\File\\".$date);//判断文件夹是否存在if (!file_exists($dir)){mkdir ($dir,0777,true);//不存在 创建新文件夹$panduan = move_uploaded_file($_FILES['file']['tmp_name'], $path);//存入图片} else {$panduan = move_uploaded_file($_FILES['file']['tmp_name'], $path);//存入已有文件夹内 }//保存到指定路径 指定名字if ($panduan){//存储成功$res = ['errCode'=>0,'errMsg'=>'图片上传成功','file'=>$file_name1,'Success'=>true];return json($res);}else{//失败$res = ['errCode'=>0,'errMsg'=>'图片上传失败','file'=>'https://127.0.0.1:80/xxxx.png','Success'=>!true];return json($res);}}} ?>
微信小程序-上传多张图片加进度条(支持预览、删除)相关推荐
- 微信小程序-上传多张图片加进度,持续修正中……
tips.参考网上资料的改进版 1.怎么使用.html <!--无限制需要在js代码里设置数量,upload为上传地址,或者说图片服务器--><up-picurl="{{u ...
- 微信小程序上传多张图片,上传文件pdf等
wx.getFileSystemManager().readFileSync同步循环数组是可以拿到值的 wx.getFileSystemManager().readFile异步,但是加了这个就一直是空 ...
- 微信小程序上传多张图片
开发微信小程序时,时常会用到多图上传的情况,由于微信API的特性,一次只能上传一张图片,然而实际的情况是我们通常会要求一次上传多张图片,所以只能通过循环调用 wx.uploadFile 来实现上传多张 ...
- 微信小程序上传多张图片到服务器,怎么在微信小程序中同时上传多张图片
怎么在微信小程序中同时上传多张图片 发布时间:2021-04-16 18:05:52 来源:亿速云 阅读:99 作者:Leah 今天就跟大家聊聊有关怎么在微信小程序中同时上传多张图片,可能很多人都不太 ...
- 微信小程序 上传多张图片
小程序会用到一些上传的模块,这里分享一下小程序原生上传的插件,转自朋友的博客. HTML部分: <!-- 选择图片 --><view class='up-pic'><vi ...
- 微信小程序上传Excel文本文件功能
问题: 在开发过程中会发现微信小程序有很多功能都还不能满足我们的需求,谁叫客户就是上帝呢,前几天小编遇到了这么个问题,就是用微信小程序上传文件,但是还以为微信带有这个模块,可是查了许久还是没有找到,只 ...
- 微信小程序上传文件组件
微信小程序上传文件 一.说明 该拍照组件带有微信授权相机功能,会结合后端接口,将上传的图片以数组集合的形式传值给父级页面. 注意:组件适用于,单独上传图片,不携带参数,结合后端接口返回路径之后,再调用 ...
- 小程序 php转excel,做微信小程序上传数据 数据格式?-微信 上传数据 生成excle
做微信小程序上传数据 数据格式? 建议找人专门制作设计好,专业的事情交给专业的人做,自己浪费时间还不一定能搞好 如何把微信里的excel传到qq上 1.在手机中先箭头所示的"微信" ...
- 微信小程序上传文件到阿里OSS教程
前言 (一)开通OSS服务与新建Bucket 开通OSS服务这里省略,新建bucket. (二)设置Bucket属性,后台配置域名 上传文件访问域名 这里我们要在小程序后台配置上传域名(上面的域名是我 ...
最新文章
- 甘肃省计算机二级考试题库,2011甘肃省计算机等级考试二级最新考试试题库(完整版)...
- 【聊透SpringMVC】自学java和三大框架要多久
- Python爬虫解析html:lxml的HtmlElement对象获取和设置inner html
- eclipse ide for java ee developers与eclipse ide for java developers有什么区别
- 五十五、uniapp简单实现Todo项目(慕课网)
- Codeforces Round #717 (Div. 2) D(倍增dp)
- 自从有了mybatis-plus代码生成器,写代码效率高了一大截
- ModelArts微认证零售客户分群知识点总结
- 用anaconda保证64位和32位的python共存
- vue 截取视频第一帧
- python运维开发之第九天
- 如何区分网线是几类的_如何判断网线是几类线?
- BitTorrent概述
- 移动数据Moving Data
- 利用好 git bisect 这把利器,帮助你快速定位疑难 Bug
- 椭圆形印章核心算法浅析及使用GDI+绘制椭圆印章的方法
- 【WPF】后台切换前台图片
- [XJTUSE 算法设计与分析] 第三章 动态规划 3.2 动态规划典型例题与解题思路(一)
- vue中DatePicker从前台到后台日期偶尔差一天
- NBA季后赛总抢断排行榜(数据截止至11年5月5日)
热门文章
- linux内核中的hook函数详解,linux内核中的hook函数详解
- 计算机指纹识别的原理步骤,指纹识别原理和过程
- Tigase数据库结构(1)
- 安卓教程:提取APK程序里图片资源的方法
- Django 数据库建表的时候 No migrations to apply原因出现和解决
- Struts2之控制标签
- android 通知打开app,Android打开通知栏并回到主页的几种方式
- pcie16x能插1x的卡嘛?_上高速后关掉ETC过龙门架,下高速再插上会更便宜吗?
- C# OpenTK教程 - 1.1 创建窗口
- [蓝桥杯][2019年第十届真题c/c++B组]完全二叉树的权值