PHP 프레임워크 ThinkPHP ThinkPHP가 Qiniu Cloud Storage의 업로드 및 트랜스코딩 기능을 구현하는 방법

ThinkPHP가 Qiniu Cloud Storage의 업로드 및 트랜스코딩 기능을 구현하는 방법

Apr 11, 2023 am 09:15 AM

인터넷 기술이 지속적으로 발전함에 따라 클라우드 스토리지, 특히 비디오 웹사이트와 오디오 웹사이트가 점점 더 널리 사용되고 있으며, 이러한 웹사이트는 사용자에게 온라인 보기 또는 온라인 청취를 제공하며, 이 모든 것 뒤에는 클라우드 스토리지 기술이 지원됩니다. Qiniu Cloud Storage는 국내 최고의 클라우드 스토리지 서비스 제공업체로서 인터넷 산업, 특히 멀티미디어 업로드, 저장, 가속 및 배포 등 다양한 애플리케이션을 보유하고 있으며 성능이 좋습니다. 그래서 이번 글에서는 ThinkPHP를 예로 들어 Qiniu Cloud Storage의 업로드 및 트랜스코딩 기능을 소개하겠습니다.

1. ThinkPHP란?

ThinkPHP는 중국 개발자가 만든 무료 오픈 소스 PHP 프레임워크로 개발자가 간단한 구성과 패키징을 통해 애플리케이션을 빠르게 개발할 수 있습니다. ThinkPHP는 웹 개발의 실제 요구 사항을 충분히 고려하고 오픈 소스 커뮤니티의 우수한 작품을 적극적으로 통합하여 웹 개발자의 요구 사항을 완벽하게 충족합니다.

2. Qiniu Cloud Storage는 무엇입니까? Qiniu Cloud Storage는 사용자에게 안정적이고 효율적이며 안전한 클라우드 스토리지 서비스를 제공하는 데 중점을 둔 빠르고 간단한 클라우드 스토리지 서비스 제공업체입니다. Qiniu Cloud Storage는 멀티미디어 파일에 대한 저장, 관리 및 배포 서비스를 제공할 수 있습니다. 사용자는 자신의 멀티미디어 파일을 Qiniu Cloud Storage에 업로드하기만 하면 되며 Qiniu의 CDN을 통해 가속화되어 사용자가 이러한 파일에 더 빠르고 원활하게 액세스할 수 있습니다.

3. ThinkPHP가 Qiniu Cloud Storage 업로드를 구현하는 방법

ThinkPHP 프레임워크에서 Qiniu Cloud Storage의 업로드 기능을 사용하려면 먼저 프로젝트에 인증 클래스와 Qiniu Cloud Storage SDK를 도입하여 인증 정보를 처리해야 합니다. 업로드 중 :

require_once('Auth.php');
require_once('Config.php');
require_once('autoload.php');//引入七牛SDK

$accessKey = '可以从七牛后台获得';
$secretKey = '可以从七牛后台获得';

//鉴权对象
$auth = new Auth($accessKey, $secretKey);  

//生成上传Token
$bucket = '要上传的bucket名称';//bucket名称
$key = '要生成的文件名';//文件名称
$options['returnBody'] = '{"name": $(fname), "size": $(fsize), "hash": $(etag), "url": "http://example.com/$(key)"}';//要返回的信息
$policy = array(
    'returnBody'      =>  json_encode($options['returnBody']),//返回给客户端的信息
    'saveKey'         =>  $key,//上传的文件名
);
$upToken = $auth->uploadToken($bucket, null, 3600, $policy);//生成上传Token
로그인 후 복사

그런 다음 페이지에서 Qiniu Cloud Storage의 Javascript SDK를 사용하여 파일 선택 및 업로드 기능을 실현하세요.

<script src="http://cdn.staticfile.org/plupload/2.1.1/plupload.full.min.js"></script>
<script type="text/javascript">
    //设置上传参数
    var uploader = new plupload.Uploader({
        browse_button: 'browse', //触发选择文件对话框的按钮
        url: 'http://upload.qiniup.com/', //服务器端的上传页面地址
        flash_swf_url: 'path/of/plupload/Moxie.swf',//swf文件,用于解决跨域或不支持xhr2的浏览器上传问题
        silverlight_xap_url: 'path/of/plupload/Moxie.xap',//silverlight文件,用于解决跨域或不支持xhr2的浏览器上传问题
        chunk_size: '4mb',//分块上传的块大小
        multi_selection: false,//是否支持多选
        filters: {
            max_file_size: '10mb',//最大文件大小
            mime_types: [
              {title: "Image files", extensions: "jpg,gif,png,jpeg,webp"},
              {title: "Video files", extensions: "avi,mp4,mkv,flv,mov"},
              {title: "Audio files", extensions: "mp3,wma,ogg,wav"},
            ]//上传文件类型限制
        },
        multipart: true,//是否将文件分块上传
        multipart_params: {//通常只能上传原始二进制文件到流中,而文件的信息必须存在于HTTP请求的上下文中
            key: '文件名称',
            token: '{$uptoken}',
        }
    });

    //绑定触发上传的事件
    uploader.bind('FilesAdded', function(up, files) {
       uploader.start();//当文件被添加到上传队列后开始上传流程
    });

    //绑定上传过程的事件
    uploader.bind('UploadProgress', function(up, file) {
        var percent = file.percent;
    });

    //绑定上传成功的事件
    uploader.bind('FileUploaded', function(up, file, info) {
        var result = JSON.parse(info.response);
        console.log(result.url);//获取上传成功后的文件链接
    });

    //绑定上传失败的事件
    uploader.bind('Error', function(up, err) {
        if(err.code==-601){//文件格式不符合
           console.log('上传失败:文件格式不符合要求');
        }else if(err.code==-200){//文件太大
           console.log('上传失败:文件大小超出限制');
        }else{
           console.log(err.message);//其他失败信息
        }
    });

    //启动上传
    uploader.init();
</script>
로그인 후 복사

4 ThinkPHP가 Qiniu Cloud Storage의 트랜스코딩 기능을 사용하는 방법

일부 비디오 웹사이트 및 오디오 웹사이트의 경우 등, 사용자가 업로드한 오디오 및 비디오 파일은 웹사이트의 요구 사항을 충족시키기 위해 트랜스코딩해야 하는 경우가 많습니다. 이때 오디오 및 비디오를 자동으로 트랜스코딩할 수 있는 Qiniu Cloud Storage의 트랜스코딩 기능을 사용해야 합니다. 다양한 형식의 재생 링크를 생성하여 사용자가 온라인으로 시청하거나 들을 수 있도록 합니다. ThinkPHP 프레임워크에서 Qiniu Cloud Storage의 트랜스코딩 기능을 사용하려면 작곡가 패키지를 설치해야 합니다. 설치하려면 작곡가를 사용하세요.

composer require qiniu/php-sdk
로그인 후 복사

설치가 완료되면 PHP SDK를 통해 오디오 및 비디오 트랜스코딩을 수행할 수 있습니다. 다음을 참조하세요:

require __DIR__ . '/vendor/autoload.php';
use Qiniu\Auth;
use Qiniu\Storage\BucketManager;
use Qiniu\Storage\UploadManager;

$accessKey = 'your accessKey';
$secretKey = 'your secretKey';

//鉴权对象
$auth = new Auth($accessKey, $secretKey);

//空间名称
$bucket = 'your bucket';

//文件保存键名
$key = 'your key';

//上传文件的本地路径
$filePath = 'your filepath';

//上传的转码参数
$pfop = "avthumb/mp4";

//对于使用自己私有的codec库时需要制定so路径, 在<SoSdkPath>中填入so文件路径。其他情况则没必要, 该参数可以不填。
$encoding_codec_lib_path = null;

$urlbase64 = \Qiniu\base64_urlSafeEncode($bucket . ':' . $key);

//设置回调的URL地址
$notifyUrl = 'http://yourdomain.com/callback.php';

//转码完成后回调指向的地址
$fops = $pfop. '|saveas/' . \Qiniu\base64_urlSafeEncode("$bucket:$key") . '|notifyURL/' . $notifyUrl;

//初始化BucketManager
$config = new \SDK\Qiniu\Config();
$config->zone = new \SDK\Qiniu\Zone\Zhuanqu();
$bucketManager = new BucketManager($auth, $config);

//调用fetch方法拉取网络上的一个资源,该资源用于转码,该方式不支持本地音视频文件的转码处理
$fetchResult = $bucketManager->fetch($url, $bucket, $key, $pfop);

if($fetchResult != null){
    //上传流程
    $uploadMgr = new UploadManager($config);
    list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath ,null,$encoding_codec_lib_path);
    if ($err !== null) {
        echo '上传失败:', $err->message(), "\n";
    } else {
        echo '上传成功:', $ret['key'], "\n";

        //持久化处理并等待处理结果
        $persistentOps = $fops;//音视频持久化处理的详细指令,多个指令用;隔开
        $pipeline = '';//进行转码的队列名称,不传此参数将使用默认队列
        $force = true;//强制覆盖已有的同名文件

        //调用持久化处理接口实现音视频转码等持久化操作(不支持本地音视频文件的转码处理)。
        list($ret, $err) = $bucketManager->persistentFop($bucket, $key, $persistentOps, $pipeline, $force);
        if ($err !== null) {
            var_dump($err);
        } else {
            var_dump($ret);
        }
    }
}
로그인 후 복사

5. 결론

이 기사의 소개를 통해 모든 사람이 Qiniu Cloud Storage의 업로드 및 트랜스코딩 기능을 더 깊이 이해하고 Qiniu Cloud Storage의 업로드 및 트랜스코딩 작업을 실현할 수 있기를 바랍니다. ThinkPHP 프레임워크에서. 지식을 배우기 위해서는 지속적인 연습과 요약을 통해서만 그것을 진정으로 마스터하고 자유롭게 적용할 수 있습니다.

위 내용은 ThinkPHP가 Qiniu Cloud Storage의 업로드 및 트랜스코딩 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Think Book과 ThinkPad의 차이점은 무엇입니까? Think Book과 ThinkPad의 차이점은 무엇입니까? Mar 06, 2025 pm 02:16 PM

이 기사는 Lenovo의 ThinkBook과 ThinkPad 노트북 라인을 비교합니다. ThinkPads는 전문가의 내구성과 성능을 우선시하는 반면 ThinkBooks는 일상적인 사용을위한 세련되고 저렴한 옵션을 제공합니다. 주요 차이점은 빌드 품질에 있습니다. p

SQL 주입 자습서를 방지하는 방법 SQL 주입 자습서를 방지하는 방법 Mar 06, 2025 pm 02:10 PM

이 기사에서는 ThinkPHP 응용 프로그램에서 SQL 주입을 방지하는 방법을 설명합니다. ThinkPhp의 쿼리 빌더를 통해 매개 변수화 된 쿼리를 사용하여 직접 SQL 연결을 피하고 강력한 입력 유효성 검사 및 소독을 구현하는 것을 강조합니다. 광고

ThinkPhp 취약성을 다루는 방법은 무엇입니까? ThinkPhp 취약성을 다루는 방법은 무엇입니까? Mar 06, 2025 pm 02:08 PM

이 기사는 ThinkPHP 취약점을 다루고 패치, 예방 및 모니터링을 강조합니다. 업데이트, 보안 패치 및 코드 개선을 통해 특정 취약점을 처리하는 자세한 내용이 있습니다. 보안 구성, 입력과 같은 사전 조치

ThinkPhp가 개발 한 소프트웨어를 설치하는 방법 튜토리얼을 설치하는 방법 ThinkPhp가 개발 한 소프트웨어를 설치하는 방법 튜토리얼을 설치하는 방법 Mar 06, 2025 pm 02:09 PM

이 기사는 다운로드, 추출, 데이터베이스 구성 및 권한 확인과 같은 단계를 다루는 ThinkPhp 소프트웨어 설치에 대해 자세히 설명합니다. 시스템 요구 사항 (PHP 버전, 웹 서버, 데이터베이스, 확장), 공통 설치를 다룹니다.

ThinkPHP 취약성을 고치는 방법 ThinkPhp 취약성을 다루는 방법 ThinkPHP 취약성을 고치는 방법 ThinkPhp 취약성을 다루는 방법 Mar 06, 2025 pm 02:04 PM

이 튜토리얼은 일반적인 ThinkPhp 취약점을 다룹니다. 정기적 인 업데이트, 보안 스캐너 (RIPS, Sonarqube, Snyk), 수동 코드 검토 및 식별 및 치료에 대한 침투 테스트를 강조합니다. 예방 조치에는 보안이 포함됩니다

ThinkPhp의 데이터베이스에 연결하는 방법에 대한 자세한 단계 ThinkPhp의 데이터베이스에 연결하는 방법에 대한 자세한 단계 Mar 06, 2025 pm 02:06 PM

이 안내서는 Database.php를 통한 구성에 중점을 둔 ThinkPhp의 데이터베이스 연결에 대해 자세히 설명합니다. PDO를 사용하고 ORM 또는 직접 SQL 상호 작용을 허용합니다. 가이드는 공통 연결 오류 문제 해결, 여러 연결 관리, en

ThinkPhp를 사용하여 명령 줄 애플리케이션을 구축하려면 어떻게해야합니까? ThinkPhp를 사용하여 명령 줄 애플리케이션을 구축하려면 어떻게해야합니까? Mar 12, 2025 pm 05:48 PM

이 기사에서는 ThinkPhp의 CLI 기능을 사용하여 CLI (Command-Line Applications)를 구축하는 것을 보여줍니다. 모듈 식 설계, 종속성 주입 및 강력한 오류 처리와 같은 모범 사례를 강조하면서 Insu와 같은 일반적인 함정을 강조합니다.

ThinkPhp 튜토리얼을 사용하는 방법 ThinkPhp 튜토리얼을 사용하는 방법 Mar 06, 2025 pm 02:11 PM

이 기사는 무료 오픈 소스 PHP 프레임 워크 인 ThinkPhp를 소개합니다. ThinkPhp의 MVC 아키텍처, 기능 (라우팅, 데이터베이스 상호 작용), 장점 (빠른 개발, 사용 편의성) 및 단점 (잠재적 과잉 엔지니어링, 의사 소통

See all articles