博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于音频文件的上传
阅读量:7076 次
发布时间:2019-06-28

本文共 2529 字,大约阅读时间需要 8 分钟。

图片,音频其实都是文件,只是格式不一样罢了。

格式不一样,程序能检测到的信息就不一样。
比如,图片能检测到宽高。音频则检测不到。

上传它们的时候,根据不同点,进行微调就可以了。

支持mp3格式,wav格式
 
查看录音
(未上传)

后台进行处理

大致处理过程如下:

1.上传至本地服务器
2.上传至云服务器(比如七牛)
3.删除本地服务器文件
4.保存七牛服务器的文件路径至数据库

漏了一步,上传本地服务器之前,进行过滤处理,包括判断大小是否超出,判断类型是否符合等等。

上传到本地的时候,首先要确保文件夹存储,然后确认文件名称不能重复。通常都是使用日期加随机数来避免重复。

如果文件夹不存在,则创建文件夹,并赋予777权限。一切程序都是无敌的,可以调用系统底层的代码,可以创建文件夹和赋予权限。

/** * @param $folders 文件夹名称 * @param string $name 文件名称 * @param float|int $max_size 最大文件大小 * @param array $allowExts 允许上传的类型 * @return mixed */public function upload_audio($folders, $name = 'file' ,$max_size = 1024000 * 50 ,$allowExts = ['mp3','wav']){    if($_FILES[$name]['size'] > $max_size){        $res['error'] = '音频大小不能超过50M!';        return $res;    }    import('ORG.Net.UploadFile');    $upload = new UploadFile();                             // 实例化上传类    $upload->allowExts = $allowExts;                        // 允许上传的文件格式    $upload->maxSize  = $max_size;                          // 设置附件上传大小    $upload->saveRule = time().'_'.mt_rand();    $date_folders = date('Ymd',time());    $upload->savePath =  "site_upload/".$folders.'/'.$date_folders.'/';// 设置附件上传目录    if (!is_dir($upload->savePath)){        @mkdir('./'.$upload->savePath, 0777,true);    }    $upload->upload();    $info = $upload->getUploadFileInfo();//取得成功上传的文件信息    if($info){        vendor('Func.Func');        vendor('Qiniu.Qiniu');        $qiniu = new Qiniu();        $file =  C('SF_HOST'). $upload->savePath . $info[0]['savename'];        $ext = pathinfo($file, PATHINFO_EXTENSION);        $name = time() . mt_rand() . '.' . $ext;        $success = $qiniu->up($file, $name, C('QINIU.BUCKET'));        if($success){            @unlink('./' .$info[0]['savepath'] . $info[0]['savename']);            $res['msg']='ok';            $res['save_name'] = C('CDN.URI') . $name;        }else{            @unlink('./' .$info[0]['savepath'] . $info[0]['savename']);            $res['error'] = '上传失败!!';        }    }else{        $res['error']='上传失败!!';    }    return $res;}

下面是七牛的up方法,

uploadToken($bucketName); list($ret, $error) = $upManager->put($token, $name, file_get_contents($file)); if (!$error) { return $ret; } else { return false; } }}

经过这些折腾,音频上传成功了!

422101-20180615144236043-2049891028.png

转载地址:http://uwcml.baihongyu.com/

你可能感兴趣的文章
制作iOS应用图标的最简单方法
查看>>
淘宝JavaScript 编码风格规范
查看>>
[原创]桓泽学音频编解码(8):关于MP3和AAC量化器设计的研究
查看>>
苹果开发者帐号(Company)申请流程
查看>>
字符串分拆并统计的处理示例.sql
查看>>
Nhibernate 3.0 cookbook学习笔记 一对多与多对多映射
查看>>
【内存管理】内存池技术
查看>>
Android日常开发总结
查看>>
数据库连接池php-cp介绍
查看>>
微信支付id出现的重复支付解决方法和app应用中多种支付方式之间的对比
查看>>
在CentOS下利用Eclipse调试FFmpeg
查看>>
Sed 命令详解 正则表达式元字符
查看>>
ng-include文件实现ng-repeat
查看>>
python 回溯法 子集树模板 系列 —— 10、m着色问题
查看>>
监测CentOS下TCP断线
查看>>
cocos JS for循环让精灵从屏幕中间往两边排列散开
查看>>
(最短路径算法整理)dijkstra、floyd、bellman-ford、spfa算法模板的整理与介绍
查看>>
bzoj 3597: [Scoi2014]方伯伯运椰子 [01分数规划 消圈定理 spfa负环]
查看>>
poj 2240
查看>>
java同步包种ArrayBlockingQueue类的分析与理解
查看>>