wx小程序学习Day12 上传图片

本文详细介绍了如何在小程序中实现意见反馈页,包括自定义图片组件的选择、显示、删除,以及完整的提交流程,包括文本验证和图片上传。


意见反馈页-自定义图片组件

静态结构效果图👇
在这里插入图片描述
点击➕号可以选择本地图片上传,为了方便调用,这里把每个图片都自定义成组件

组件的静态结构比较简单在这里插入图片描述
feedback中导入
在这里插入图片描述


意见反馈页-选择并显示图片

点击➕按钮,要调用小程序内置的选择图片wx-chooseImageapi,获取到图片路径数组,将图片路径存到data中,再将图片路径数组传给图片组件,在图片组件中渲染出来

api具体细节查看文档:https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html

注意一下,这里不能写chooseImg:res.temFilePaths,不然用户多次添加图片时就会重置图片路径数组
在这里插入图片描述
这里因为chooseImg数组元素就是图片路径,key要绑定*this
同时要把图片路径数组传给图片组件UpImg
在这里插入图片描述
图片组件UpImg渲染出来
在这里插入图片描述
在这里插入图片描述


意见反馈-删除图片

获取到点击的图片的索引,根据索引删除图片路径中对应的元素
在这里插入图片描述
在这里插入图片描述


意见反馈-提交功能

点击提交按钮:

  • 获取文本域的内容
  • 对这些内容进行合法性验证
  • 将用户选择的图片上传到专门的图片的服务器,返回图片外网的链接
  • 将文本与内容和外网的图片路径一起提交到服务器
  • 清空当前页面

1.获取文本域的内容
data中定义一个变量textValue,在文本域标签上绑定这个变量
给文本域标签绑定输入事件,将输入的值存入到变量中

在这里插入图片描述
在这里插入图片描述
2. 合法性验证
在这只是验证一下是不是为空而已
获取到文本域的内容,如果为空就弹窗提示用户
在这里插入图片描述
3. 将图片上传到服务器
遍历图片数组,挨个上传
再维护一个图片数组,存放图片外网的链接
在这里插入图片描述
我没服务器所以就上传不了了,大概步骤就是下面这样😢
请添加图片描述
4. 将文本与内容和外网的图片路径一起提交到服务器
在这里插入图片描述
5.清空当前页面
在这里插入图片描述
当图片在上传时,最好给用户一个loading提示框,并且还需要判断一下用户只提交文本的情况
在这里插入图片描述


开发一个用于八字排盘的微信小程序是一个涉及前端、后端和数据处理的综合性项目。以下是一个详细的实现方法和教程,帮助你从零开始构建这个系统。 ### 1. 八字排盘的基本原理 八字排盘是根据用户的出生日期、时间、地点等信息,计算出对应的四柱八字,并结合命理规则进行分析。核心步骤包括: - **解析出生信息**:用户输入出生日期(公历或农历)、出生时间、出生地点。 - **转换为天干地支**:将公历日期转换为农历,再根据节气和时辰推算出年柱、月柱、日柱、时柱。 - **分析命理规则**:根据命理学的规则(如十神、五行、神煞等)对八字进行解读。 ### 2. 微信小程序前端开发 微信小程序的前端主要使用 WXML、WXSS 和 JavaScript 进行开发。你可以使用 UniApp 框架来实现跨平台兼容性,或者直接使用微信原生框架。 #### 2.1 页面结构设计 - **首页**:提供用户输入界面,包括日期选择器、时间选择器、地点选择器。 - **排盘结果页**:展示八字排盘结果,包括四柱、五行、十神等信息。 - **命理解读页**:根据排盘结果展示详细的命理分析内容。 #### 2.2 示例代码:日期选择器组件 ```html <view class="form-item"> <label>出生日期</label> <picker mode="date" range="{{dateRange}}" start="1900-01-01" end="2100-12-31" bindchange="onDateChange"> {{selectedDate}} </picker> </view> ``` #### 2.3 数据请求与交互 使用微信小程序的 `wx.request` 方法与后端 API 进行通信,获取排盘结果。 ```javascript Page({ data: { baziResult: {} }, submitForm() { const birthDate = this.data.selectedDate; const birthTime = this.data.selectedTime; const birthLocation = this.data.selectedLocation; wx.request({ url: 'https://api.example.com/bazi', method: 'POST', data: { date: birthDate, time: birthTime, location: birthLocation }, success: (res) => { this.setData({ baziResult: res.data }); } }); } }); ``` ### 3. 后端 API 开发 后端负责处理用户的输入,执行排盘算法,并返回结果。可以使用 Node.js、Python 或 PHP 等语言进行开发。 #### 3.1 排盘算法实现 排盘算法需要处理日期转换、节气计算、时辰推算等复杂逻辑。可以参考以下步骤: 1. **日期转换**:将公历日期转换为农历日期。 2. **节气计算**:确定出生日期是否处于某个节气附近,以决定月柱。 3. **时辰推算**:根据出生时间推算出时柱。 4. **干支组合**:生成年柱、月柱、日柱、时柱的天干地支组合。 #### 3.2 示例代码:使用 Python 进行日期转换 ```python from lunarcalendar import Lunar, Solar def convert_to_lunar(solar_date): solar = Solar(solar_date.year, solar_date.month, solar_date.day) lunar = Lunar.from_solar(solar) return lunar ``` #### 3.3 命理规则分析 通过数据库存储命理规则,如十神、五行、神煞等,后端根据排盘结果查询规则并返回解释。 ```sql CREATE TABLE fate_rules ( id INT PRIMARY KEY, rule_type VARCHAR(20), -- 十神/五行/神煞 condition JSON, result TEXT, weight FLOAT -- 规则权重 ); ``` ### 4. 安全与支付模块 #### 4.1 通信协议 - 使用 **RESTful API** 设计规范。 - 采用 **JWT Token** 进行用户鉴权。 - 数据传输使用 **AES-256-CBC** 加密,确保安全性。 #### 4.2 支付模块实现 支持多种支付方式(如微信支付、支付宝),可以使用支付工厂模式实现多支付接口适配。 ```php class PaymentFactory { public static function create($type){ switch($type){ case 'wechat': return new WechatPay(); case 'alipay': return new Alipay(); case 'thirdparty': return new ThirdPartyPay(); default: throw new Exception('Unsupported payment'); } } } ``` ### 5. 部署与维护 - **源码结构**: ``` bazi-system/ ├── mobile/ # 移动端源码(UniApp项目) ├── backend/ # 后端API(含排盘算法) ├── admin/ # 管理后台(Vue+ElementUI) ├── docs/ # 部署文档+API文档 └── thirdparty/ # 三方服务配置指南 ``` - **部署要求**: - 使用云服务器(如腾讯云、阿里云)部署后端服务。 - 使用微信开发者工具上传小程序代码。 - 配置 HTTPS 证书,确保 API 接口安全。 ### 6. 测试与优化 - **功能测试**:确保排盘结果准确,支付流程顺畅。 - **性能优化**:使用缓存机制减少重复计算,提升响应速度。 - **用户体验优化**:增加加载动画、错误提示、历史记录等功能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值