一、准备工作

1、创建数据库表images

2、设置数据库表images的权限

二、创建图片列表页

创建图片列表页imageList,用于展示图片列表。该页面具有跳转到图片上传页面、图片列表展示、删除图片的功能。

1、imageList.wxml

<!-- 上传图片 -->
<view class="camera">
<image src="../../images/相机.png" bindtap="toimageUpload"></image>
</view> <!-- 图片列表 -->
<block wx:for="{{imageList}}" wx:key="index">
<view class="item-container">
<view class="item-name">上传作者:{{item.name}}</view>
<view class="item-time">上传时间:{{item.time}}</view>
<image class="item-image" src="{{item.imageUrl}}"></image>
<image class="delete" src="../../images/删除.png" bindtap="deleteImage" data-id="{{item._id}}"></image>
</view>
</block>

2、imageList.wxss

page{
/*background-color: #eedeb0;*/
background-color: #edd1d8;
}
.item-container{
background-color: #fff;
margin: 0 20rpx 20rpx 20rpx;
border-radius: 10rpx;
position: relative;
}
.item-container image{
width: 200rpx;
height: 200rpx;
margin: 20rpx;
border-radius: 10rpx;
}
.item-container .delete{
width: 30rpx;
height: 30rpx;
position: absolute;
top: 5rpx;
right: 5rpx;
} /*照相机放在右上角*/
.camera{
text-align: right;
}
.camera image{
width: 50rpx;
height: 50rpx;
margin: 10rpx 30rpx 10rpx auto;
}

3、imageList.js

Page({
//页面的初始数据
data: {
imageList:[]
}, //生命周期函数--监听页面显示
onShow: function () {
this.getImageList()
}, //获取图片列表的函数
getImageList(){
let that = this
let time = Date.parse(new Date())
console.log("时间戳",time);
wx.cloud.database().collection("images")
.orderBy("time","desc")
.get()
.then(res=>{
console.log("获取数据成功",res);
that.setData({
imageList:res.data
})
})
.catch(err=>{
console.log("获取数据失败",err);
})
}, //点击照相机跳转到图片上传页面
toimageUpload(){
wx.navigateTo({
url: '/pages/imageUpload/imageUpload',
})
}, //删除图片
deleteImage(e){
console.log("用户点击了删除按钮",e);
let id = e.currentTarget.dataset.id
//提示确定删除
wx.showModal({
title: '删除图片',
content: '确定删除这张图片吗?',
})
.then(res=>{
console.log("显示删除提示框成功",res);
if(res.confirm){ //如果用户点击确定,则从数据库删除图片
wx.cloud.database().collection("images")
.doc(id)
.remove()
//删除成功
.then(res=>{
console.log("图片删除成功",res);
wx.showToast({
title: '删除成功',
icon:"success",
duration:2000
})
//删除成功后刷新页面
this.getImageList()
})
//删除失败
.catch(err=>{
console.log("图片删除失败",err);
})
}
})
.catch(err=>{
console.log("显示删除提示框失败",err);
})
}
})

三、创建图片上传页

创建图片上传页imageUpload,用于图片上传。该页面具有上传图片的功能。

1、imageUpload.wxml

<!--上传图片的按钮-->
<button type="primary" bindtap="imageUpload">上传单张图片</button>

2、imageUpload.wxss

button{
margin-bottom: 50rpx;
}
image{
width: 200rpx;
height: 200rpx;
margin: 10rpx auto;
}

3、imageUpload.js

//定义空数组,用来存放上传成功后的图片路径
let imageArray = []
//定义当前时间
var util = require("../../utils/util") Page({
//上传单张图片
imageUpload(){
console.log("用户点击了上传单张图片的按钮");
//用户选择单张照片
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success :res=> {
//打印用户选择照片成功后的log
console.log("用户选择单张图片成功",res);
//输出用户所选照片的临时路径
console.log("用户所选单张图片的临时路径",res.tempFilePaths[0]);
//显示加载
wx.showLoading({
title: '加载中',
})
//上传单张图片到云存储
wx.cloud.uploadFile({
cloudPath: (new Date()).valueOf()+'.png',
filePath: res.tempFilePaths[0], // 文件路径
}).then(res => {
console.log("单张图片上传成功",res)
//将上传成功的图片显示在当前页面
// this.setData({
// imageUrl:res.fileID
// })
//将上传成功的图片添加到数据库
this.addImageList(res.fileID)
//隐藏加载
wx.hideLoading()
//提示成功
wx.showToast({
title: '图片上传成功',
icon:"success",
duration:2000
})
//跳转到图片列表页
wx.navigateTo({
url: '/pages/imageList/imageList',
})
}).catch(error => {
console.log("单张图片上传失败",error);
//隐藏加载
wx.hideLoading()
})
}
})
}, //将上传成功的单张图片添加到数据库
addImageList(imageUrl){
//当前时间
var currenttime = util.formatTime(new Date)
wx.cloud.database().collection('images')
.add({
data:{
name:"monica",
time:currenttime,
imageUrl:imageUrl
}
})
.then(res=>{
console.log("图片添加到数据库成功",res);
})
.catch(err=>{
console.log("图片添加到数据库失败",err);
})
}
})

四、效果展示

微信小程序云开发-云存储的应用-云相册的更多相关文章

  1. 微信小程序(七)-项目实例(原生框架 MINA转云开发)==02-云开发-配置

    云开发:1.就是用云函数的型式来使用云存储和云数据库完成各种操作!     2.只关注调什么函数,完成什么功能即可,无需关心HTTP请求哪一套!     3.此模式不代表没有服务器,只是部署在云环境中 ...

  2. 小程序语音红包开发中 汉字转拼音的问题 微信小程序红包开发遇到的坑

    公司最近在开发微信小程序的红包功能,语音红包需要用到文字转拼音的功能. 之前介绍过怎么将中文的汉字转为拼音的,具体看下面这篇文章. 微信语音红包小程序开发如何提高精准度 红包小程序语音识别精准度 微信 ...

  3. 《微信小程序商城开发实战》笔者的新书,欢迎各位粉丝上京东购买

    作者图书京东链接,请点击------>>>    **微信小程序商城开发实战** 附京东真实评价截图: 编辑推荐 在当今移动互联网大潮中,微信应用凭借其庞大的用户基数和极强的用户黏性 ...

  4. Django微信小程序后台开发教程

    本文链接:https://blog.csdn.net/qq_43467898/article/details/83187698Django微信小程序后台开发教程1 申请小程序,创建hello worl ...

  5. vue+uni-app商城实战 | 第一篇:【有来小店】微信小程序快速开发接入Spring Cloud OAuth2认证中心完成授权登录

    一. 前言 本篇通过实战来讲述如何使用uni-app快速进行商城微信小程序的开发以及小程序如何接入后台Spring Cloud微服务. 有来商城 youlai-mall 项目是一套全栈商城系统,技术栈 ...

  6. 微信小程序快速开发

    微信小程序快速开发 一.注册小程序账号,下载IDE 1.官网注册https://mp.weixin.qq.com/,并下载IDE. 2.官方文档一向都是最好的学习资料. 注意:1)注册账号之后会有一个 ...

  7. 【微信小程序】开发实战 之 「配置项」与「逻辑层」

    微信小程序作为微信生态重要的一环,在实际生活.工作.商业中的应用越来越广泛.想学习微信小程序开发的朋友也越来越多,本文将在小程序框架的基础上就微信小程序项目开发所必需的基础知识及语法特点进行了详细总结 ...

  8. BeautyWe.js 一套专注于微信小程序的开发范式

    摘要: 小程序框架... 作者:JerryC 原文:BeautyWe.js 一套专注于微信小程序的开发范式 Fundebug经授权转载,版权归原作者所有. 官网:beautywejs.com Repo ...

  9. 微信小程序如何开发制作

    微信小程序如何开发制作 微容SMO是一款微信小程序的免费在线制作工具,用户在微容平台上无需编辑代码,可通过拖拽式操作即可完成小程序的制作,真正意义上实现了小程序零代码免费制作! 消除技术门槛:无需代码 ...

  10. 【推荐】开源项目minapp-重新定义微信小程序的开发

    minapp 重新定义微信小程序的开发 官网:https://qiu8310.github.io/minapp/ 作者:Mora minapp 重新定义微信小程序的开发 使用 用 npm 安装命令行工 ...

随机推荐

  1. 教你三种jQuery框架实现元素显示及隐藏动画方式

    摘要:在jQuery框架中对元素对象进行显示和隐藏有三种方式,分别是"默认方式显示和隐藏"."滑动方式显示和隐藏"."淡入淡出显示和隐藏". ...

  2. NCF WebApi中 Controller的全解析

    简介 上一篇我们说了如何实现一个WebApi,并运行起来 这次我们来说说WebApi的内在,我们到底做了哪些事情 仓库地址:https://github.com/NeuCharFramework/NC ...

  3. <题解>幻想乡战略游戏

    洛谷题目 看到题面,很容易就想到,这是要你找树上的重心,只不过这个重心是在带边权的树上 所以对于这个我们在树上找这个重心 一开始我想的是,我要更新权值,然后把每个点的答案更新一下 就取最大值,这好像是 ...

  4. UF_CLONE 克隆操作

    Open C UF_CLONE_add_assembly  添加装配到克隆操作UF_CLONE_add_part           添加部件到克隆操作UF_CLONE_apply_defaultsU ...

  5. STM32学习笔记-NVIC中断知识点

    STM32学习笔记-NVIC中断知识点总结 中断优先级设置步骤 1. 系统运行后先设置中断优先级分组 函数:void NVIC_PriorityGroupConfig(uint32_tNVIC_Pri ...

  6. 喜鹊开发者(The Magpie Developer)

    搬运文,原文地址:https://div.io/topic/1576 我经常感觉,开发人员很像我们所说的喜鹊,以不停的获取很多小玩意来装饰他们的窝而著称.就像喜鹊一样,开发人员通常都被定义为聪明的.好 ...

  7. ceph-csi源码分析(7)-rbd driver-IdentityServer分析

    更多 ceph-csi 其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi源码分析(7)-rbd driver-IdentityServer分析 当 ...

  8. UGUI ScrollRect 鼠标滑动灵敏度调节

  9. 浅析富文本编辑器框架Slate.js

    浅析富文本编辑器框架Slate.js 本文不是关于Slate.js使用入门的文章,如果还不了解该框架,建议先阅读下官方的文档:Slate官网文档 关于Slate的一些特性 不同于其他编辑器类的库,Sl ...

  10. DRF之权限和频率限制

    一.权限 权限可以限制用户对视图的访问和对具体数据对象的访问. 在执行视图的dispatch方法前,会先进行视图访问权限的判断 在通过get_object获取对象时,会进行模型对象访问权限的判断 源码 ...