微信小程序开发之文件上传下载应用场景(附Demo源码),Demo为小相册应用,源码在附件中,本示例需要腾讯云支持。

http://www.henkuai.com/forum.php?mod=viewthread&tid=15151&extra=page%3D1%26filter%3Dlastpost%26orderby%3Dlastpost

目录:

部署和运行
        整体架构
        1. 准备域名和证书
        2. 云主机和镜像部署
        3. 配置 HTTPS
        4. 域名解析
        5. 开通和配置 COS
        6. 启动小相册示例 Node 服务
        7. 微信小程序服务器配置
        8. 启动小相册 Demo
    主要功能实现
        上传图片
        获取图片列表
        下载和保存图片
        删除图片

微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架、组件以及 API,在这个平台上面的想象空间很大。

小相册是结合腾讯云对象存储服务(Cloud Object Service,简称COS)制作的一个微信小程序示例。在代码结构上包含如下两部分:

applet: 小相册应用包代码,可直接在微信开发者工具中作为项目打开
server: 搭建的 Node 服务端代码,作为服务器和applet通信,提供 CGI 接口示例用于拉取 COS 图片资源、上传图片到 COS、删除 COS 图片等。

小相册主要功能如下:

列出 COS 服务器中的图片列表
点击左上角上传图片图标,可以调用相机拍照或从手机相册选择图片,并将选中的图片上传到 COS 服务器中
轻按任意图片,可进入全屏图片预览模式,并可左右滑动切换预览图片
长按任意图片,可将其保存到本地,或从 COS 中删除

部署和运行

拿到了本小程序源码的朋友可以尝试自己运行起来。

整体架构

1. 准备域名和证书

在微信小程序中,所有的网络请求受到严格限制,不满足条件的域名和协议无法请求,具体包括:

只允许和在 MP 中配置好的域名进行通信,如果还没有域名,需要注册一个。
网络请求必须走 HTTPS 协议,所以你还需要为你的域名申请一个证书。

域名注册好之后,可以登录微信公众平台配置通信域名了。

2. 云主机和镜像部署

小相册的服务器运行代码和配置已经打包成腾讯云 CVM 镜像,大家可以直接使用。

腾讯云用户可以免费领取礼包,体验腾讯云小程序解决方案。

镜像已包含「剪刀石头布」和「小相册」两个小程序的服务器环境与代码,需要体验两个小程序的朋友无需重复部署

3. 配置 HTTPS

镜像中已经部署了 nginx,需要在 /etc/nginx/conf.d 下修改配置中的域名、证书、私钥。

配置完成后,即可启动 nginx。

nginx

4. 域名解析

我们还需要添加域名记录解析到我们的云服务器上,这样才可以使用域名进行 HTTPS 服务。

在腾讯云注册的域名,可以直接使用云解析控制台来添加主机记录,直接选择上面购买的 CVM。

解析生效后,我们在浏览器使用域名就可以进行 HTTPS 访问。

5. 开通和配置 COS

小相册示例的图片资源是存储在 COS 上的,要使用 COS 服务,需要登录 COS 管理控制台,然后在其中完成以下操作:

  1. 开通 COS 服务分配得到唯一的APP ID
  2. 使用密钥管理生成一对SecretID和SecretKey(用于调用 COS API)
  3. 在 Bucket 列表中创建公有读私有写访问权限、CDN加速的 bucket(存储图片的目标容器)

复制代码

6. 启动小相册示例 Node 服务

在镜像中,小相册示例的 Node 服务代码已部署在目录/data/release/qcloud-applet-album下:

进入该目录:

  1. cd /data/release/qcloud-applet-album

复制代码

在该目录下有个名为config.js的配置文件(如下所示),按注释修改对应的 COS 配置:

  1. module.exports = {
  2. // Node 监听的端口号
  3. port: '9993',
  4. ROUTE_BASE_PATH: '/applet',
  5. cosAppId: '填写开通 COS 时分配的 APP ID',
  6. cosSecretId: '填写密钥 SecretID',
  7. cosSecretKey: '填写密钥 SecretKey',
  8. cosFileBucket: '填写创建的公有读私有写的bucket名称',
  9. };

复制代码

小相册示例使用pm2管理 Node 进程,执行以下命令启动 node 服务:

  1. pm2 start process.json

复制代码

7. 微信小程序服务器配置

进入微信公众平台管理后台设置服务器配置,配置类似如下设置:

注意:需要将 www.qcloud.la 设置为上面申请的域名,将 downloadFile 合法域名设置为在 COS 管理控制台中自己创建的 bucket 的相应 CDN 加速访问地址,如下图所示:

8. 启动小相册 Demo

在微信开发者工具将小相册应用包源码添加为项目,并把源文件config.js中的通讯域名修改成上面申请的域名。

然后点击调试即可打开小相册Demo开始体验。

这里有个问题。截止目前为止,微信小程序提供的上传和下载 API 无法在调试工具中正常工作,需要用手机微信扫码预览体验。

主要功能实现

上传图片

上传图片使用了微信小程序提供的wx.chooseImage(OBJECT)获取需要上传的文件路径,然后调用上传文件接口wx.request(OBJECT)发送 HTTPS POST 请求到自己指定的后台服务器。和传统表单文件上传一样,请求头Content-Type也是multipart/form-data。后台服务器收到请求后,使用 npm 模块 multiparty 解析 multipart/form-data 请求,将解析后的数据保存为指定目录下的临时文件。拿到临时文件的路径后,就可直接调用 COS SDK 提供的文件上传 API 进行图片存储,最后得到图片的存储路径及访问地址(存储的图片路径也可以直接在 COS 管理控制台看到)。

获取图片列表

调用列举目录下文件&目录 API可以获取到在 COS 服务端指定 bucket 和该 bucket 指定路径下存储的图片。

下载和保存图片

指定图片的访问地址,然后调用微信小程序提供的wx.downloadFile(OBJECT)和wx.saveFile(OBJECT)接口可以直接将图片下载和保存本地。这里要注意图片访问地址的域名需要和服务器配置的 dowmloadFile 合法域名一致,否则无法下载。
删除图片

删除图片也十分简单,直接调用文件删除 API 就可以将存储在 COS 服务端的图片删除。

回复下载:

本帖隐藏的内容

  qcloud-applet-album.zip (1.09 MB, 下载次数: 172)

微信小程序开发之文件上传下载应用场景(附Demo源码)相关推荐

  1. 微信小程序开发之——文件上传

    一 概述 将录像的结果传递给服务器,服务端提供的接口文档为: 字段名称 字段类型 字段说明 必填项 示例 token String token 是 服务器下发的token(header) file F ...

  2. 微信小程序开发【前端+后端(Java)】附完整源码,拿来接私活简直不要太香

    一.前言 现在微信小程序越来越火了,相信不少人都通过各种途径学习过微信小程序或者尝试开发,作者就是曾经由于兴趣了解开发过微信小程序,所以现在用这篇博客记录我之前开发的一些经验和一些心得吧. 二.主要内 ...

  3. 微信小程序+SpringBoot实现文件上传与下载

    微信小程序+SpringBoot实现文件上传与下载 1.文件上传 1.1 后端部分 1.1.1 引入Apache Commons FIleUpload组件依赖 1.1.2 设置上传文件大小限制 1.1 ...

  4. 微信小程序开发(二)图片上传

    更新2017-08-24 更新七牛SDK只最新7.0.5版本. 在之前的博客<Node.js+express+MySQL使用七牛云实现的用户头像修改>,已经实现了在MUI框架或者< ...

  5. 基于微信小程序实现番茄钟专注时间项目演示【附项目源码+论文说明】

    基于微信小程序实现番茄钟专注时间项目演示 摘要 时间管理是指事先计划和运用一定的技能.方法和事物,以敏感.有效地利用时间完成既定的个人或安排的过程.其中番茄法则是一种先进的时间管理理论与方法,正受到越 ...

  6. 基于微信小程序实现番茄钟专注时间项目演示【附项目源码+论文说明】分享

    基于微信小程序实现番茄钟专注时间项目演示 摘要 时间管理是指事先计划和运用一定的技能.方法和事物,以敏感.有效地利用时间完成既定的个人或安排的过程.其中番茄法则是一种先进的时间管理理论与方法,正受到越 ...

  7. 微信小程序开发之图片上传+Java服务端接收

    闲言少叙直入正题 前端代码在网上一搜一大堆,且搜出来的结果基本上是正确的,没啥好说的,我连代码都不想贴(如果有时间的话明天整理下贴在文章结尾,没时间的话就不贴了).但是,但是,但是,靠谱的,不用改动就 ...

  8. uniapp微信小程序 选择聊天记录文件上传

    目录 精简版总结 示例 容易踩的坑 1.页面刷新问题 2.extension问题 精简版总结 单文件 wx.chooseMessageFile({count: 1,//限制选择的文件数量type: ' ...

  9. 微信小程序开发之——拍照上传

    一 拍照效果 拍照前 拍照后 二 业务流程 拍照前,显示取消和拍照按钮 拍照后,显示预览画面及重拍.取消.拍照和上传按钮 点击重拍,预览界面被拍照界面替换 点击上传,上传拍照预览的图片 点击取消,返回 ...

最新文章

  1. 语言都是相通的,学好一门语言,再学第二门语言就很简单,记录一下我复习c语言的过程。...
  2. JavaScript验证表单大全
  3. 教你在Python中用Scikit生成测试数据集(附代码、学习资料)
  4. 【开发环境】安装 Visual Studio Community 2013 开发环境 ( 下载 Visual Studio Community 2013 with Update 5 版本的安装包 )
  5. AIR720串口2收发数据问题
  6. 2018 GDCPC 省赛总结
  7. 6 四大组件之Service
  8. C++ 通讯录设计(三)
  9. 语义分割江湖的那些事儿——从旷视说起
  10. spine 2.1.27 Pro 叠加方式(Blending)
  11. VggNet网络结构详解
  12. 数据可视化案例(六)——智慧医院数据可视化
  13. 港股美股打新截然不同!教你玩转美股打新
  14. 平面设计之PS(前)
  15. 锋利的jQuery读书笔记-第1章 认识jQuery
  16. PYNQ开发板使用-使用DMA进行数据搬移(Simple DMA transfer 模式)
  17. Egencia smartmix航班排名模型背后的运营研究
  18. 万字长文,冲刺备战金九银十,奉上[Java一线大厂高岗面试题解析合集]
  19. 万网域名和ip绑定最新详细步骤
  20. 古代的银子和现在的人民币换算关系..

热门文章

  1. 那些会讲ppt的技术人有多爽?演讲的6个步骤
  2. 阿里云栖大会100位顶级大咖演讲PPT+视频全分享!
  3. fwrite函数与fflush函数
  4. ARM中ABORT(中止)的理解
  5. perl脚本语言学习
  6. Microsoft Visual Studio 2008安装教程
  7. 计算机桌面无法中英文切换,Win10输入法中英文切换不了怎么办?
  8. mapreduce出现大量task被KILLED_UNCLEAN的3个原因
  9. 逆向经验 + 逆向工具
  10. antd-mobile下拉加载