微信语音——判断上传的音频时长

今天在测试同事的微信平台的发送语音的时候,发现有时候语音能发过来,有时候就不行,经过检查,发现丢掉了检测音频时长(微信里面语言时长要限定在60S内),好吧,我补上,闲着也是闲着~

首先是读取语音的时长:

<span style="font-size:14px;"> /// <summary>
        /// 获取上传音频的时间长度
        /// </summary>
        /// <param name="strFullUrl">The STR full URL.</param>
        /// <returns>System.String.</returns>
        /// <remarks>Editor:v-liuhch CreateTime:2015/5/15 17:32:57</remarks>
        public string GetLocalVoiceTotalTime(string strFullUrl)
        {

            ShellClass sh = new ShellClass();
            Folder dir = sh.NameSpace(Path.GetDirectoryName(strFullUrl));
            FolderItem item = dir.ParseName(Path.GetFileName(strFullUrl));
            return dir.GetDetailsOf(item, 27); // 获取歌曲时长。

        }</span>

使用shellclass的时候要先引用COM组件Microsoft Shell Controls And Automation,并将Embed Interop Type 设为False。

由于上述函数只支持读取本地文件,所以,我们将得到的文件先放在临时文件夹中,判断完成之后立即删除。

<span style="font-size:14px;">/// <summary>
        /// 检查上传音频文件的总时间长度是否小于60s
        /// </summary>
        /// <param name="file">The file.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
        /// <remarks>Editor:v-liuhch CreateTime:2015/5/15 17:34:51</remarks>
        public bool ChkVideoTotalTime(HttpPostedFile file)
        {
            string strTempUrl = Path.GetTempPath() + DateTime.Now.ToString("yyyyMMddHHmmssfff").ToString() + Path.GetExtension(file.FileName);
            file.SaveAs(strTempUrl);//保存到本地临时文件夹

            try
            {
                string strTotalTime = GetLocalVoiceTotalTime(strTempUrl);  //获取文件时长

                return (Convert.ToDateTime(strTotalTime) - Convert.ToDateTime("00:01:00")).Seconds > 0 ? false : true;

            }
            catch (Exception)
            { return false;}
            finally { System.IO.File.Delete(strTempUrl);}//删除临时文件
        }
</span>

之后,在处理文件之前加入如下判断就ok了:

<span style="font-size:14px;">  if (int.TryParse(HttpContext.Current.Request.QueryString["MaterialVoice"], out MaterialVoice))//如果是素材里面上传音频的话
                    {
                        if (!ChkVideoTotalTime(files[0]))
                        {
                            return strRequest = "errorTime";  //如果超过60s
                        }
                    }</span>

PS:别忘了前台验证。

时间: 2024-10-28 14:41:34

微信语音——判断上传的音频时长的相关文章

java微信接口之四—上传素材

一.微信上传素材接口简介 1.请求:该请求是使用post提交地址为: https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=ACCESS_TOKEN 其中ACCESS_TOKEN是我们动态获取的. 发送的数据: {"articles":[ { "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXC

asp.net如何正确判断上传文件格式

ASP.NET中在判断文件格式时,如果通过截取扩展名来做判断.通过ContentType (MIME) 判断都不太安全,因为这两种方式用户都可以伪造. 下面介绍通过byte获取文件类型,来做判断的方式 if (Request.Files.Count > 0) { //这里只测试上传第一张图片file[0]     HttpPostedFile file0 = Request.Files[0];            //转换成byte,读取图片MIME类型     Stream stream;

js判断上传文件大小

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="content-typ

兼容各浏览器的js判断上传文件大小

由于项目需要,在网上找了一个JS判断上传文件大小的程序,经测试兼容IE6-9,Firefox10,Opera11.6,safari5.1,chrome17 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>js判断上传文件的大小</titl

Java 微信公众号上传永久素材的方法

Java 微信公众号上传永久素材的方法 学习了:http://blog.csdn.net/u013791374/article/details/53258275 膜拜一下,源码如下: @RequestMapping(value="create") public String create(@RequestParam MultipartFile file, HttpServletRequest request, HttpServletResponse response, HttpSess

判断上传文件是否是图片文件

方法一:用image对象判断是否为图片 /// <summary> /// 判断文件是否为图片 /// </summary> /// <param name="path">文件的完整路径</param> /// <returns>返回结果</returns> public Boolean IsImage(string path) { try { System.Drawing.Image img = System.D

微信js sdk上传多张图片

微信js sdk上传多张图片,微信上传多张图片 该案例已tp3.2商城为例 直接上代码: php代码: public function ind(){ $appid="11111111111111111111"; $secret="11111111111111111111"; $token = S('access_token'); if (!$token) { $res = file_get_contents("https://api.weixin.qq.c

php上传大文件时出现错误

在实现文件上传功能时,发现小文件可以上传(低于8M),但是上传大文件时,会出现以下错误: exception 'yii\web\BadRequestHttpException' with message 'Unable to verify your data submission.' in /var/www/html/labweb/vendor/yiisoft/yii2/web/Controller.php:110 Stack trace: #0 /var/www/html/labweb/ven

本地Git仓库和远程仓库的创建和关联及github上传(git push)时出现error: src refspec master does not match any解决办法

github上传项目方法: 在你的电脑上装好git Git Bash Here 本地Git仓库和远程仓库的创建及关联大致流程是: 1.初始化这个本地的文件夹为一个Git可以管理的仓库 git init 注意:Git会自动为我们创建唯一一个master分支我们能够发现在当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了. 2.将本地的仓库和远程的仓库进行关联 git remote add origin [em