阿里云 php断点上传

来源:互联网 发布:mac mini安装win7教程 编辑:程序博客网 时间:2024/05/16 05:37

https://help.aliyun.com/document_detail/32103.html


laravel:http://www.cnblogs.com/lsm19870508/p/5846680.html


yii:http://www.yiichina.com/code/1078




用了阿里云的断点上传,亲测有效:


首先阿里云的sdk一定要有,这里就不多说了。

直接使用:



贴出下面代码:

 $accessKeyId = Yii::app()->params['log_id'];//账号id    $accessKeySecret = Yii::app()->params['log_key'];//key值    $endpoint = Yii::app()->params['oss_endpoint'];    $bucket = Yii::app()->params['oss_bucket'];    $file_name=$this->cName($_FILES['file']['name']);//上传文件的名字,调用方法处理了一下    $object = 'video/'.$file_name;//上传的路径文件拼上文件名    /**     *  step 1. 初始化一个分块上传事件, 也就是初始化上传Multipart, 获取upload id     */    try{        $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);        $uploadId = $ossClient->initiateMultipartUpload($bucket, $object);    } catch(OssException $e) {        printf(__FUNCTION__ . ": initiateMultipartUpload FAILED\n");        printf($e->getMessage() . "\n");        return;    }    print(__FUNCTION__ . ": initiateMultipartUpload OK" . "\n");    /*     * step 2. 上传分片     */    $partSize = 10 * 1024 * 1024;    $uploadFile =  $_FILES['file']['tmp_name'];    $uploadFileSize = filesize($uploadFile);    $pieces = $ossClient->generateMultiuploadParts($uploadFileSize, $partSize);    $responseUploadPart = array();    $uploadPosition = 0;    $isCheckMd5 = true;    foreach ($pieces as $i => $piece) {        $fromPos = $uploadPosition + (integer)$piece[$ossClient::OSS_SEEK_TO];        $toPos = (integer)$piece[$ossClient::OSS_LENGTH] + $fromPos - 1;        $upOptions = array(            $ossClient::OSS_FILE_UPLOAD => $uploadFile,            $ossClient::OSS_PART_NUM => ($i + 1),            $ossClient::OSS_SEEK_TO => $fromPos,            $ossClient::OSS_LENGTH => $toPos - $fromPos + 1,            $ossClient::OSS_CHECK_MD5 => $isCheckMd5,        );        if ($isCheckMd5) {            $contentMd5 = OssUtil::getMd5SumForFile($uploadFile, $fromPos, $toPos);            $upOptions[$ossClient::OSS_CONTENT_MD5] = $contentMd5;        }        //2. 将每一分片上传到OSS        try {            $responseUploadPart[] = $ossClient->uploadPart($bucket, $object, $uploadId, $upOptions);        } catch(OssException $e) {            printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} FAILED\n");            printf($e->getMessage() . "\n");            return;        }        printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} OK\n");    }    $uploadParts = array();    foreach ($responseUploadPart as $i => $eTag) {        $uploadParts[] = array(            'PartNumber' => ($i + 1),            'ETag' => $eTag,        );    }    /**     * step 3. 完成上传     */    try {        $ossClient->completeMultipartUpload($bucket, $object, $uploadId, $uploadParts);    }  catch(OssException $e) {        printf(__FUNCTION__ . ": completeMultipartUpload FAILED\n");        printf($e->getMessage() . "\n");        return;    }    printf(__FUNCTION__ . ": completeMultipartUpload OK\n");echo json_encode(array('succ'=>0,'url'=>Yii::app()->params['oss_url'].'/'.$object));//返回音频文件url。



原创粉丝点击