一、准备工作

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. 外部NORFlash是第一个以硬件为基础的信任

    外部NORFlash是第一个以硬件为基础的信任 External NOR Flash memory is first with hardware root-of-trust 英飞凌科技公司宣布了它声称 ...

  2. JAVA复习题(一)基础知识

    类的构造方法描述正确的是( )A. 类中的构造方法不能省略B. 构造方法必须与类同名,但方法不能与class同名C. 构造方法在一个对象被new时执行D. 一个类只能有一个构造方法我的答案:C正确答案 ...

  3. 菜鸟刷题路:剑指 Offer 05. 替换空格

    剑指 Offer 05. 替换空格 class Solution { public String replaceSpace(String s) { StringBuilder str = new St ...

  4. Django(66)admin后台管理注册用户

    前言 我们使用django创建用户可以使用注册接口的方式,也可以使用django自带的后台管理系统,这里就介绍使用后台管理系统创建用户 admin后台管理系统 在使用之前我们可以使用第三方的插件,来美 ...

  5. ubuntu初识

    简单的Linux系统理解 Ubuntu ctrl+alt 可以令虚拟机释放鼠标,回到主系统中. 如果ubuntu有问题,如何重装? -------直接删除目录.虚拟机内的操作不会影响到宿主机. 1.挂 ...

  6. 【题解】入阵曲 luogu3941 前缀和 压维

    丹青千秋酿,一醉解愁肠. 无悔少年枉,只愿壮志狂 题目 题目描述 小 F 很喜欢数学,但是到了高中以后数学总是考不好. 有一天,他在数学课上发起了呆:他想起了过去的一年.一年前,当他初识算法竞赛的 时 ...

  7. Windows操作系统添加永久静态路由

    1.比如:添加一条去往 10.10.10.0/24网段的静态路由,指定去往此网段的路由都走 172.20.153.254网关 route -p add 10.10.10.0 mask 255.255. ...

  8. Vue(4)Vue指令的学习1

    前言 Vue官网一共有提供了14个指令,分别如下 v-text v-html v-show v-if ☆☆☆ v-else ☆☆☆ v-else-if ☆☆☆ v-for ☆☆☆ v-on ☆☆☆ v ...

  9. 2021年Wordpress手把手教你做个独立站——部署篇

    2021年Woocommerce电商主题的安装部署教程 Woocommerce是一个Wordpress的一个流行的电商插件.完成Wordpress的安装即已完成80%.剩下的便是去寻找一款合适的自己喜 ...

  10. 31、服务器磁盘、内存、cpu使用率监控

    31.1.监控磁盘: #!/bin/sh diskspace="`df -hT`" IFS="\n" disk_value="80" ech ...