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)
];
}