關於音頻文件的上傳


圖片,音頻其實都是文件,只是格式不一樣罷了。
格式不一樣,程序能檢測到的信息就不一樣。
比如,圖片能檢測到寬高。音頻則檢測不到。

上傳它們的時候,根據不同點,進行微調就可以了。

<div class="form-group col-lg-12">
    <label class="control-label col-lg-3 text-right">錄音:</label>
    <span class="input-group file-caption-main col-lg-5" style="float: left;">
        <div class="form-control file-caption  kv-fileinput-caption" style="overflow: hidden;line-height: 23px;">
            支持mp3格式,wav格式
        </div>
        <input style="display: none;" class="file-real" name="recording" type="file" multiple="" />

        <div class="input-group-btn file-btn">
            <div class="btn btn-primary btn-file">
                <i class="glyphicon glyphicon-folder-open"></i>&nbsp;
                <span class="hidden-xs">上傳錄音文件</span>
            </div>
        </div>
    </span>
    <span class="col-lg-4 text-left erbi-form-right">
       <if condition="$result['recording']">
            <a href="<?php echo $result['recording'];?>" target="_blank">查看錄音</a>
            <else/>
            (未上傳)
        </if>
    </span>
</div>

后台進行處理

大致處理過程如下:
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方法,

<?php

use Qiniu\Storage\UploadManager;
use Qiniu\Auth;

class Qiniu
{
    public function up($file, $name, $bucketName = '51aitaoqi')
    {
        $accessKey = C('QINIU.ACCESS_KEY'); 
        $secretKey = C('QINIU.SECRET_KEY');
        $upManager = new UploadManager();
        $auth = new Auth($accessKey, $secretKey);
        $token = $auth->uploadToken($bucketName);
        list($ret, $error) = $upManager->put($token, $name, file_get_contents($file));
        if (!$error) {
            return $ret;
        } else {
            return false;
        }
    }
}

經過這些折騰,音頻上傳成功了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM