PHP code example of ddvphp / ddv-file

1. Go to this page and download the library: Download ddvphp/ddv-file library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

ddvphp / ddv-file example snippets




Route::group(['prefix'=>'upload'],function(){
    Route::get('filePartSize','Api\UploadController@filePartSize');
    Route::get('fileId','Api\UploadController@fileId');
    Route::get('filePartInfo','Api\UploadController@filePartInfo');
    Route::get('filePartMd5','Api\UploadController@filePartMd5');
    Route::post('complete','Api\UploadController@complete');
});



  public function __construct(){
    method_exists(parent::class, '__construct') && parent::__construct();
    $this->fileConfigInit();
  }
  private function fileConfigInit (){
    // 基本配置
    $config = [
      // uid 可以为null和字符串0
      // uid 如果为null 每次获取fileId都会拿到新的id,因为每个文件不确定是那个用户的
      // uid 如果为0 ,插件支持0这个uid,没有登录的用户统一视为0这个用户的
      'uid'=>'0'
      // fileIndex 是一个可选参数,如果配置了,会导致文件系统返回的地址通通是索引地址哦
      // fileIndex 是一个索引标识
      'fileIndex'=>'videolive',
      // 默认不属于uid标识索引文件
      'fileIndexUseUid'=>false,
      // 默认一块最小字节数
      'partSizeMin'=>400*1024,
      // 默认一块最大字节数
      'partSizeMax'=>15*1024*1024,
      // 默认一共可以多少块
      'partSumMax'=>1000
    ];
    // 使用存储驱动,比如阿里云的驱动,也可以pr扩展驱动[感谢]
    $drivers = new \DdvPhp\DdvFile\Drivers\AliyunOssDrivers(config('aliyun.oss'));
    // 数据库模型,目前提供laravel数据模型,也可以pr数据模型[感谢]
    $database = new \DdvPhp\DdvFile\Database\LaravelMysqlDatabase();
    // 实例化文件类
    $this->upload = new \DdvPhp\DdvFile($config, $drivers, $database);
  }



  ## 获取分块大小
  public function filePartSize (Request $request){
    return [
      'data' =>
        $this->upload->getPartSize($request->only(['fileSize','fileType','deviceType']))
    ];
  }




  ## 获取文件id
  public function fileId(Request $request){
    $input = $request->only(
      $this->upload->getFileIdInputKeys([
        // 授权类型
        'authType',
        // 管理类型
        'manageType',
        // 上传目录
        'directory'
      ])
    );
    // 自己的业务逻辑,和权限逻辑
    return [
      'data' =>
        $this->upload->getFileId($input)
    ];
  }



  ## 获取成功上传的信息
  public function filePartInfo(Request $request){
    $input = $request->only(
      [
        'fileId',
        'fileMd5',
        'fileSha1',
        'fileCrc32'
      ]
    );
    return [
      'data' =>
        $this->upload->getFilePartInfo($input)
    ];
  }



  ## 获取分块签名
  public function filePartMd5 (Request $request){
    $input = $request->only(
      [
        'fileId',
        'fileMd5',
        'fileSha1',
        'fileCrc32',


        'contentMd5',
        'partLength',
        'partNumber'
      ]
    );
    return [
      'data' =>
        $this->upload->getFilePartMd5($input)
    ];

  }



  ## 合并上传文件
  public function complete(Request $request){
    $input = $request->only(
      [
        'fileId',
        'fileMd5',
        'fileSha1',
        'fileCrc32'
      ]
    );
    return [
      'data' =>
        $this->upload->complete($input)
    ];
  }