微信公众号中保存用户发送的多媒体文件并进行查看、播放的方法

微信公众号中时常有用户发送文字、图片、语音、视频进行咨询,需要对信息进行回复。由于微信公众号管理后台中文字信息保留5天,其他类型的消息保留3天,消息过期后将无法查看、回复。开启微信公众号开发模式后,已经开发了进行微信公众号、微信用户管理的管理后台,希望把对用户信息的回复功能也加入到管理后台中,并长期保存用户发的消息及对用户的回复。

以上为需求背景,文字信息的保存查看比较简单,这里主要说明如何将用户发送的多媒体文件进行保存,并进行查看、播放。

难点:

  • 微信语音为amr格式,直接通过html播放器无法播放;

文件保存思路:

注意:多媒体文件为用户发送,可能涉及隐私,为了保证文件数据安全,需要将文件保存在网站根目录之外,即不能直接访问文件。

  • 获取用户发送消息的类型,MsgType;
  • 如果MsgType是image、voice、video、shortvideo,则为多媒体文件;
  • 获取多媒体消息体中的MediaId;
  • 根据MediaId通过接口获取多媒体文件;
  • 将多媒体文件保存在到服务器指定目录中;
  • 将文件路径信息放入微信消息体中,并保存数据库中;

管理后台获取多媒体文件思路:

  • 获取数据表中微信用户发送的消息;
  • 解析消息体,如果MsgType是image、voice、video、shortvideo,则为多媒体文件,则获取多媒体文件的保存路径;
  • 通过列表的形式显示用户发送的消息,如果是多媒体文件,则根据多媒体文件的文件类型显示图标,如语音显示MP3图标;
  • 通过点击列表中的文件类型图标,进行查看或播放,图片、视频另开窗口进行查看、播放,语音在当前页面播放。
  • 根据文件路径读取指定文件的内容,由于文件类型不同需要指定不同的http头信息,如语音文件为header(‘Content-Type:audio/amr-wb+’);
  • 图片、视频文件通过浏览器可以直接查看或播放,语音文件需要进行文件编码、解码,详见https://github.com/Gistiny/opencore-amr-js

详细代码

  • 保存多媒体文件

  • 查看多媒体文件

  • 引入js

  • 播放

 

页面效果

  • 管理后台消息列表页面

  • 视频播放效果

  • 图片查看页面

 

Windows下mysql5.5主从同步配置[转]

前置条件:

A主机(作为主服务器)

环境:Win7,mysql5.5 IP:172.17.42.82

B主机(作为从服务器)

环境:Win7,mysql5.5 IP:172.17.42.156

主服务器配置:

1.在A的mysql数据库中建立一个同步专用账户slave

命令:GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO slave@’172.17.42.156′ IDENTIFIED BY ‘517na.com’;

注释:172.17.42.156为从服务器的IP  slave为账户  517na.com为密码

2.对A服务器配置进行修改 打开mysql/my.ini文件,在[mysqld]下面添加如下内容:

server-id=10 log-bin=mysql-bin

其中: server-id:为主服务器A的ID值(建议1-32,最好10以后)

log-bin:二进制变更日值

3.重启A服务器(从现在起,它将把客户端有关数据库的修改记载到二进制变更日志里去)

命令:

net stop mysql

net start mysql

从服务器配置:

1.对B服务器配置进行修改 打开mysql/my.ini文件,在[mysqld]下面添加如下内容:

server-id=11

log-bin=mysql-bin

relay-log=relay-bin

relay-log-index=relay-bin-index

replicate-do-db=SongyuStock

注释:replicate-do-db:需要同步的数据库

2.重启B服务器

3.登录mysql,输入如下命令:

stop slave;

change master to master_host=’172.17.42.82′,master_user=’slave’,master_password=’517na.com’;

start slave;

4.查看设置是否正确

命令:show slave status\G;

主要是看以下两项是否为YES:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

备注:

1.查看sever_id的命令:show varias like ‘server_id’;

2.参考文章:http://blog.csdn.net/g2321514568/article/details/12441049

配置中常见错误:

1.ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO

解决方案: http://bg.artuion.com/window_linux/122.html

2.MySQL同步故障:” Slave_SQL_Running:No” 两种解决办法

解决方案: http://blog.chinaunix.net/uid-21505614-id-289477.html http://kerry.blog.51cto.com/172631/277414

3.linux下配置主从 参考文章: http://www.cnblogs.com/cchun/p/3712637.html

在线预览pdf文件方法

在项目开发中常常需要上传附件,并进行查看。本次项目中需要上传pdf文件并能够在线预览。

为了实现此需求,使用了PDF.js这一js库。

PDF.js官网

PDF.js文件目录结构

项目代码

其中file为PDF文件的路径,

PDF预览页面。图中红色框中分别为打印和下载。

通过PHP实现html页面导出为pdf文件或进行打印

项目开发中需要实现html页面的打印,经过对比,此次使用的是PHP的mPDF6.0类库。

mPDF类库官网

mPDF类库文档

mPDF打印、导出页面教程:

php技术–用php生成PDF最好的类MPDF

PHP 的pdf库mPDF6.0基本使用教程

下图中使用的是ThinkPHP框架,需要将mPDF类库导入框架中第三方类库目录中,在项目中引入mPDF,设置对应参数,进行pdf输出。

 

 

 

 

 

Jquery表单验证插件formValidator的AJAX提交

formValidator是一款基于JQuery的表单验证插件。

jQuery formvalidator插件 API帮助文档

Jquery表单验证插件formValidator使用方法

实际项目中,表单经常需要使用AJAX进行提交,如下:

在AJAX提交时没有先检验表单数据,即formValidator插件没有执行数据校验检查,直接提交到后台,出现前端数据校验未通过也能够提交的情况。

将表单提交事件代码改为如下形式,在提交前先判断当前页中表单是否已经通过formValidator的校验,通过则将数据提交后台,否则不提交。