PHPPHP经验分享程序猿的进阶屋

php上传音频

2017-10-09  本文已影响191人  王中阳
//controller层调用
$audioInfo = $model->uploadAudio(); 

/**
 * model层读写数据
 * 音频上传方法
 * @param $_FILES 上传的参数
 */
public function uploadAudio()
{
    $audioInfo = array(
        'flag' => false,
        'code' => 1,
        'msg' => '没有接收到数据流',
        'data' => array(),
    );
    //二进制数据流 下面这个会显示全部的参数
    $data = file_get_contents('php://input') ? file_get_contents('php://input') : gzuncompress($GLOBALS ['HTTP_RAW_POST_DATA']);
    $data = base64_decode($data);
    //递归创建目录,移动音频到指定位置
    $time = time();
    $month = date('Ym', $time);
    $today = date('j', $time);
    //获取.最后一个的位置
    $ext = "mp3";
    $audioName = "fromapp";
    $fileName = time() . $audioName . rand(1, 100000);
    $fileName = md5($fileName);
    $dirPath = self::Audio_PATH . $month . '/' . $today;
    $filePath = $dirPath . '/' . $fileName . '.' . $ext;
    Libs_Download::recurDirs($dirPath, FALSE);
    if (!empty($data)) {
        //创建并写入数据流,然后保存文件
        if (@$fp = fopen($filePath, 'w+')) {
            fwrite($fp, $data);
            fclose($fp);
            $size = filesize($filePath);
            $audioInfo['data'] = array(
                'size' => $size,
                'filename' => $fileName,
                'ext' => 'mp3',
                'dateline' => date('Y-m-d H:i:s', $time),
            );
            $audioInfo['flag'] = true;
            $audioInfo['code'] = 0;
            $audioInfo['msg'] = '数据流生成音频成功';
            return $audioInfo;
        }
        $audioInfo['code'] = 2;
        $audioInfo['msg'] = '数据流写入文件失败';
        return $audioInfo;
    } else {
        //没有接收到数据流
        return $audioInfo;
    }
}
上一篇下一篇

猜你喜欢

热点阅读