小程序实现图片上传,预览以及图片base64位处理
最近一段时间在做小程序项目,第一期功也完工了。需要好好总结一下经验,把项目中遇到的问题好好总结一下,遇到的问题,踩过的坑。今天写一个小程序实现图片上传,预览,以及删除,图片base64位处理。下面就是展示的效果

1页面布局
<view class='question-images'>
<view class='images-wrap'>
<block wx:for="{{imagesList}}" wx:key="id">
<view class='images-list' wx:if="{{imagesList.length > 0}}" >
<image class='images-item' src='{{item}}' bindtap="handleImagePreview" mode="aspectFill" data-index="{{index}}"></image>
<view class='image-remover' bindtap="removeImage" data-index="{{index}}">X</view>
</view>
</block>
<!-- 上传图片按钮 -->
<view class='images-list images-btn' bindtap='chooseImage' wx:if="{{imagesList.length < 1}}">
<image class='btn-item' src='/assets/images/camera.png'></image>
<text class='add'>添加图片</text>
</view>
</view>
</view>
</view>
2.给上传图片绑定一个事件chooseImage,用于事件触发,在data中定义一个数组。imagesList用于图片存储,baseImg单独存base64位图片的
chooseImage(e){
const that = this;
// let baseImg = that.data.baseImg;
wx.chooseImage({
sizeType: ['original', 'compressed'], //可选择原图或压缩后的图片
sourceType: ['album', 'camera'], //可选择性开放访问相册、相机
success: function(res) {
//拿到图片地址
const imagesList = that.data.imagesList.concat(res.tempFilePaths);
that.data.imagesList = imagesList.length <= 1 ? imagesList : imagesList.slice(0, 1);
//图片base64位
wx.getFileSystemManager().readFile({
filePath: res.tempFilePaths[0], //选择图片返回的相对路径
encoding: 'base64', //编码格式
success:(res) =>{
let baseImg = 'data:image/png;base64,' + res.data
that.data.baseImg = baseImg
}
})
that.setData({
imagesList
})
}
})
},
上面小程序自己提供api方法,哪里直接用,根据自己的需求进行修改
that.data.imagesList = imagesList.length <= 1 ? imagesList : imagesList.slice(0, 1); 限制只上传一张图片,可以根据自己的需要进行修改
图片处理base64位,直接调用小程序自带的wx.getFileSystemManager就可以
3.图片实现预览功能,直接上代码,也是调用下程序官网api的
handleImagePreview(e){
//预览图片
const idx = e.target.dataset.idx;
const imagesList = this.data.imagesList;
wx.previewImage({
current: imagesList[idx], //当前预览的图片
urls: imagesList, //所有要预览的图片
})
},
4.图片删除功能
removeImage(e){
//删除单个图片
let _this = this;
let index = e.target.dataset.index;
let images = _this.data.imagesList;
images.splice(index, 1)
_this.setData({
imagesList: images
})
},
每天进去一点点,好好总结经验
小程序实现图片上传,预览以及图片base64位处理的更多相关文章
- 前端实现图片上传预览并转换base64
前端实现文件的上传,就必须用到input标签,type属性为file. 在vue项目中通ref操作dom.input有一个属性accept,是必须要搭配type=file使用. multiple可以上 ...
- js实现图片上传预览功能,使用base64编码来实现
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- ASP.NET工作笔记之一:图片上传预览及无刷新上传
转自:http://www.cnblogs.com/sibiyellow/archive/2012/04/27/jqueryformjs.html 最近项目里面涉及到无刷新上传图片的功能,其实也就是上 ...
- FileReader()读取文件、图片上传预览
前言 FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据. 其中File对象可以是来自用户 ...
- 兼容好的JS图片上传预览代码
转 : http://www.codefans.net/articles/1395.shtml 兼容好的JS图片上传预览代码 (谷歌,IE11) <html xmlns="http:/ ...
- Jquery图片上传预览效果
uploadPreview.js jQuery.fn.extend({ uploadPreview: function (opts) { var _self = this, _this = $(thi ...
- [前端 4] 使用Js实现图片上传预览
导读:今天做图片上传预览,刚开始的做法是,先将图片上传到Nginx,然后重新加载页面才能看到这个图片.在这个过程中,用户一直都看不到自己上传的文件是什么样子.Ps:我发现我真的有强迫症了,都告诉我说不 ...
- Javascript之图片上传预览
使用Javascript之图片上传预览,我们无需上传到服务器中,兼容所有浏览器. 关键方法是使用微软库filter:progid:DXImageTransform.Microsoft.AlphaIma ...
- HTML5 图片上传预览
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...
- php 图片上传预览(转)
网上找的图片上传预览: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
随机推荐
- 安装CUDA和cuDNN
GPU和CPU区别 1,CPU主要用于处理通用逻辑,以及各种中断事物 2,GPU主要用于计算密集型程序,可并行运作: NVIDIA 的 GeForce 显示卡系列采用 GPU 特性进行快速计算,渲染电 ...
- Win10《芒果TV》商店版更新v3.2.3:新增应用内意见反馈、播放重试、透明磁贴
在2016圣诞节临近之际,<芒果TV>UWP版迅速更新v3.2.3版,主要是新增应用内意见反馈提交功能.播放重试.透明磁贴.动态磁贴等功能,进一步优化稳定性.视觉细节.运行速度. 芒果TV ...
- 零元学Expression Blend 4 - Chapter 28 ListBox的基本运用与更改预设样式
原文:零元学Expression Blend 4 - Chapter 28 ListBox的基本运用与更改预设样式 本章将先教大家认识ListBox的基本运用与更改预设样式 本章将先教大家认识List ...
- 领域驱动设计(DDD)的实践经验分享之持久化透明
原文:领域驱动设计(DDD)的实践经验分享之持久化透明 前一篇文章中,我谈到了领域驱动设计中,关于ORM工具该如何使用的问题.谈了很多我心里的想法,大家也对我的观点做了一些回复,或多或少让我深深感觉到 ...
- 关于联合体union的详细解释
1.概述 联合体union的定义方式与结构体一样,但是二者有根本区别. 在结构中各成员有各自的内存空间,一个结构变量的总长度是各成员长度之和.而在“联合”中,各成员共享一段内存空间,一个联合变量的长度 ...
- Qt使用windows API获取程序运行时占用内存 good
使用的是psapi.h中的GetProcessMemoryInfo函数,但是运行到该函数时就强制退出了. 后来,百度到原因是 原来Qt编译时加了-mthread,createprocess时要使的Ha ...
- Using VNC on a debian/Ubuntu server with a OS X Mac
I got a brand new MacBook Pro 13" 2016. I used to work on GNU/Linux for decades. I don't want t ...
- 使用豆瓣的pip源安装python模块
1.指定豆瓣pip源安装Django pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com ...
- 网站压力测试工具 Webbench简单介绍
Webbech能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况.Webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量.Webbench不但 ...
- golang开发:类库篇(一) Zap高性能日志类库的使用
为什么要用zap来写日志 原来是写PHP的,一直用的error_log,第一次写Go项目的时候,还真不知道该怎么写日志,后来就按照PHP的写法自己不成规范的捣鼓写.去了新公司之后,发现用的是zap.后 ...