本文为大家分享微信小程序的图片上传及图片预览功能,如下图所示:

需求分析:

  1. 图片上传可以从本地图库选择也可调用相机进行拍照上传
  2. 上传完成之后图片可以进行删除、预览等功能
  3. 图片上传至服务器进行后台调用

代码实现:

wxml文件

<view class="recovery_other_line"><view class="other_text">上传图片</view><view wx:if="{{imageList.length}}" class="choose_upload_view"><view wx:for="{{imageList}}" wx:key="index" class="choose_upload_item"><!-- 图片上传展示 --><image src="{{item}}" class="choose_upload_img" data-index="{{index}}" bindtap="previewBigImage"></image><!-- 删除按钮 --><image src="../../res/img/jdRecycleIcon/icon_remove.png" class="remove_img_icon" data-index="{{index}}" catchtap="removeChooseImage"></image></view></view><!-- 上传按钮 --><view class="other_right other_upload"><image src="../../res/img/jdRecycleIcon/icon_upload.png" class="upload_img" bindtap="chooseImageTap"></image></view>
</view>

js文件

import { baseUrl} from './../../utils/request.js'Page({data: {imageList: [],      // 上传图片集合form: {          // 用于其他功能提交的参数ossUrl: []}},// 选择上传图片的方式chooseImageTap() {let _this = this;wx.showActionSheet({itemList: ['从相册中选择', '拍一张'],itemColor: "#f7982a",success(res){if (!res.cancel) {if (res.tapIndex == 0) {// 从相册中选择_this.chooseWxImage('album')} else if (res.tapIndex == 1) {// 使用相机_this.chooseWxImage('camera')}}}})},// 选择图片chooseWxImage(type) {let _this = this;let imgs = this.data.imageList;wx.chooseImage({count: 1,sizeType: ['original', 'compressed'],sourceType: [type],success(res) {if (imgs.length > 2) {return wx.showToast({title: '最多可上传三张图片',icon: 'none'})}_this.upload(res.tempFilePaths[0]);}})},//上传图片到服务器upload: function(path) {let _this = this;let {ossUrl} = this.data.form;console.log(ossUrl)wx.showToast({icon: "loading",title: "正在上传"}),//将本地资源上传到服务器wx.uploadFile({url: baseUrl,    // 开发者服务器地址filePath: path,   // 要上传文件资源的路径 (本地路径)name: 'editormd-image-file',   // 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容header: {   // HTTP 请求 Header,Header 中不能设置 Referer"Content-Transfer-Encoding": "binary","Content-Type": "application/octet-stream","Content-Disposition": "form-data"},formData: {//和服务器约定的token, 一般也可以放在header中'token': wx.getStorageSync('userData').token,},success: function(res) {console.log(res)// 判断下if (res && res.data) {const data = JSON.parse(res.data);if (res.statusCode != 200) {wx.showToast({title: data.responseBody.data.message,icon: 'none'})return;} else {if (!!data.responseBody.data) {ossUrl.push(data.responseBody.data.url);_this.setData({imageList: ossUrl,'form.ossUrl': ossUrl  })}}}},fail: function(e) {wx.showToast({title: '上传失败',icon: 'none'})},complete: function() {wx.hideToast(); //隐藏Toast}})},// 删除图片removeChooseImage(e) {let imgs = this.data.form.ossUrl;let {index} = e.currentTarget.dataset;imgs.splice(index, 1);this.setData({'form.ossUrl': imgs,imageList: imgs})},// 预览图片previewBigImage(e) {let imgs = this.data.imageList;let {index} = e.currentTarget.dataset;wx.previewImage({//当前显示图片current: imgs[index],//所有图片urls: imgs})}
})

css文件

.recovery_other_line {display: flex;line-height: 124rpx;align-items: center;justify-content: space-between;
}
.recovery_other_line .upload_img {width: 36rpx;height: 36rpx;
}
.recovery_other_line .other_text {width: 150rpx;font-size: 28rpx;color: #000;
}
.choose_upload_view {flex: 1;height: 100%;display: flex;align-items: center;justify-content: flex-end;
}
.choose_upload_item {margin-left: 38rpx;position: relative;width: 100rpx;display: flex;align-items: center;
}
.choose_upload_view .choose_upload_img {width: 100rpx;height: 100rpx;
}
.choose_upload_view .remove_img_icon {padding: 4rpx;position:absolute;top: -15rpx;right: -13rpx;width: 28rpx;height: 28rpx;border-radius: 50%;background-color: rgba(0, 0, 0, .5);
}
.other_upload {margin-left: 15rpx;width: 80rpx;
}

以上就是本文的全部内容,希望对大家的学习有所帮助。。。

微信小程序的图片上传及图片预览功能相关推荐

  1. iOS学习:调用相机,选择图片上传,带预览功能

    iOS学习:调用相机,选择图片上传,带预览功能 发表于2年前(2013-05-30 21:38)   阅读( 18194) | 评论( 16) 27人收藏此文章,我要收藏 赞3 8月22日珠海 OSC ...

  2. 微信小程序之文件上传PHP后台接收

    微信小程序之文件上传(word,excel图片等) 微信前台代码 .html <!--pages/demo4/demo4.wxml--> <view class="cont ...

  3. Flask与微信小程序之文件上传与显示

    文章目录 Flask与微信小程序之文件上传与显示 背景 flask_uploads应用 flask_uploads的使用步骤 1 安装flask-uploads模块 2 在文件夹中导入需要用到的库 3 ...

  4. 微信小程序上传多张图片到服务器,怎么在微信小程序中同时上传多张图片

    怎么在微信小程序中同时上传多张图片 发布时间:2021-04-16 18:05:52 来源:亿速云 阅读:99 作者:Leah 今天就跟大家聊聊有关怎么在微信小程序中同时上传多张图片,可能很多人都不太 ...

  5. 微信小程序多文件上传之wx-multipart

    微信小程序多文件上传之wx-multipart 前言:我后端写了个多文件上传接口,奈何前端同事说微信小程序只能单文件上传,要支持多文件上传还要我单独再写一个单文件上传的接口,我他喵- 我看了下微信小程 ...

  6. 微信开发上传视频到服务器,微信小程序中实现上传视频的开发代码

    微信小程序中实现上传视频的开发代码,视频,接口,上传,代码,服务器 微信小程序中实现上传视频的开发代码 易采站长站,站长之家为您整理了微信小程序中实现上传视频的开发代码的相关内容. 本篇文章给大家带来 ...

  7. 微信小程序实现录音上传

    微信小程序实现录音上传 准备 开始 准备 1.微信开发者工具 2.Api文档 开始 打开微信开发者工具 项目->新建项目 选择小程序 appid是在微信公众平台申请的. 链接 新建完成后,项目自 ...

  8. 微信小程序媒体文件上传到微信服务器

    微信小程序媒体文件上传到微信服务器官方给出的事例如下: curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/up ...

  9. php微信上传视频文件在哪里,微信小程序中实现上传视频的开发代码

    本篇文章给大家带来的内容是关于微信小程序中实现上传视频的开发代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 其实这个比较简单,官方提供了API接口,基本上直接调用就可以了,话不多 ...

  10. 关于微信小程序开发环境苹果IOS真机预览报SSL协议错误问题解决方案

    关于微信小程序开发环境苹果IOS真机预览报SSL协议错误问题解决方案 参考文章: (1)关于微信小程序开发环境苹果IOS真机预览报SSL协议错误问题解决方案 (2)https://www.cnblog ...

最新文章

  1. 开发人员需知的Web缓存知识(转)
  2. 文巾解题 461. 汉明距离
  3. python替换字符的操作_Python 字符串操作(string替换、删除、截取、复制、)
  4. CSS3 Media Queries在iPhone4和iPad上的运用
  5. java 并发demo_《Java并发编程实践》中4.3.5章demo的一个疑问?
  6. 浙大计算机系可以转专业吗,求教。。浙大转专业容易吗
  7. 你有结账时发现太贵的尴尬吗?
  8. 阿里笔试的一道算法题
  9. LeetCode 338. 比特位计数(动态规划)
  10. Spark 1.0.0版本号公布
  11. HTML基础整理(From表单)
  12. 电脑大小写怎么切换_电脑键盘上的三个灯都起什么作用
  13. Windows版Tcpdump抓包工具
  14. dcp9020cdn硒鼓!错误_打印机出现硒鼓错误怎么办?打印机显示硒鼓错误分析解决...
  15. SharpDevelop 开发WPF教程
  16. 各种梯度算法总结 + Total Variation
  17. Android Study 之真正解决TextView字间距,那些扯淡的边儿去吧
  18. 【CSS】盒子模型内边距 ① ( 内边距概念 | 内边距设置语法 | 内边距设置效果 | 代码示例 )
  19. 《老梁四大名著情商课》笔记- 别慌,情商是可以提升的
  20. 《厚黑学》| 研究厚黑学的好处

热门文章

  1. 台式计算机m4350,联想 商用台式机 ThinkCentre M4350t
  2. ati.c ATI顯卡開發源代碼
  3. 常用的jar包下载网站(自用)
  4. 使用CSF对kitti的点云数据过滤出地面点云,结合PCL使用,C++实现
  5. linux佳入门教程,命令行基础工具的更佳替代品
  6. php ip纯真数据库Dat,PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
  7. csol显示服务器,csol进不了游戏服务器
  8. timesten mysql_timesten:TT0802错误
  9. RedHat 网络配置
  10. 斐讯R1 本地升级 DLAN播放 安装APK 电脑全局播放