PHP code example of quansitech / qscmf-formitem-object-storage
1. Go to this page and download the library: Download quansitech/qscmf-formitem-object-storage 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/ */
quansitech / qscmf-formitem-object-storage example snippets
composer
// 使用formItem
->addFormItem("picture_cos", "picture_os", "封面cos","",['vendor_type' => 'tengxun_cos'])
// 使用富文本则是配置第七个参数
// data-url 根据实际入口文件修改
->addFormItem('oss', 'ueditor', 'oss','', '','','data-url="/extends/ueditor/index?os=1&type=ueditor&vendor_type=aliyun_oss"')
// 使用columnItem
->addTableColumn("picture", "封面tos", 'picture_os', ['vendor_type' => 'volcengine_tos'], true)
'UPLOAD_TYPE_IMAGE' => array(
// 其他配置省略
'oss_host' => env("ALIOSS_HOST"),
'oss_meta' => array('Cache-Control' => 'max-age=2592000'),
'vendorType' => 'aliyun_oss',
),
OS_VENDOR_TYPE=aliyun_oss
// 使用formItem
->addFormItem("picture_cos", "picture_os", "封面cos","",['file_double_check' => 0])
// 使用columnItem
->addTableColumn("picture", "封面tos", 'picture_os', ['file_double_check' => 0], true)
OS_FILE_DOUBLE_CHECK=1
// 注册钩子
Hook::add('inject_os_params', InjectOsParamBehavior::class);
class InjectOsParamBehavior
{
public function run(&$params)
{
// 省略具体的自定义参数
}
}
// 注册钩子
Hook::add('handle_os_callback', HandleOsResBehavior::class);
// 需要添加修改标识 res 以及需要返回的内容 file_data
class HandleOsResBehavior
{
public function run(&$params)
{
$file_data = $params['file_data'];
$custom_param = $params['param'];
if ($custom_param['scence'] === 'ueditor'){
$data = [
"state" => 'SUCCESS',
"url" => $file_data["url"],
"size" => $file_data["size"],
"title" => htmlspecialchars($file_data["title"]),
"original" => htmlspecialchars($file_data["original"]),
"source" => $file_data
];
$params['file_data'] = $data;
$params['res'] = true;
}
}
}
->addTableColumn("file_id", "单个文件", 'file_os', '', true)
->addTableColumn("picture", "封面tos", 'picture_os', '', true)
->addFormItem('audio_id', 'audio_os', '单个音频')
->addFormItem('audios_id', 'audios_os', '多个音频')
->addFormItem('file_id', 'file_os', '单个文件')
->addFormItem('files_id', 'files_os', '多个文件')
->addFormItem('picture_id', 'picture_os', '单张图片')
->addFormItem('pictures_id', 'pictures_os', '多张图片')
$options = ['process'=>'?x-oss-process=image/resize,m_fill,w_300,h_200'] //其中w_300,h_200为参数宽300高200,请参考不同供应商图片处理参数,根据实际需求填写
// 如表单没有显示缩略图需求,$options可以不传,$options为空时显示原图
->addFormItem('picture_id', 'picture_os', '单张图片', '',$options , '', '')
$option = [
'type' => 'image', // 默认值
'width' => 1, // 裁剪框宽高比例,此为宽度,默认为1
'height' => 1 // 裁剪框宽高比例,此为高度,默认1
];
// 如没有特别需求,$option可不传
->addFormItem('cover', 'picture_os_intercept', '单张裁剪后的图片', '', $option)
->addFormItem('covers', 'pictures_os_intercept', '多张裁剪后的图片')
->addFormItem('oss', 'ueditor', 'oss','', '','','data-url="/extends/ueditor/index?os=1&type=ueditor&vendor_type=aliyun_oss"')
->addFormItem('tos', 'ueditor', 'tos','', '','','data-url="/extends/ueditor/index?os=1&type=ueditor&vendor_type=volcengine_tos"')
->addFormItem('cos', 'ueditor', 'cos','', '','','data-url="/extends/ueditor/index?os=1&type=ueditor&vendor_type=tengxun_cos"')
$file_path = WWW_DIR.'/Uploads/image/xxx/xxx.jpg';
$object = 'Uploads/image/xxx/xxx.jpg';
$options = [
'Content-Type' => 'image/png'
];
// Context 供应商生成类用法参考上文使用说明
$os_vendor = Context::genVendorByType('volcengine_tos');
$os_vendor->setBucket("bucket");
$os_vendor->setEndpoint("bucket");
$res = $os_vendor->genClient('image')->uploadFile($file_path, $object, $options);
// 服务端生成 url 和 供应商类型 vendor_type
public function customUpload(){
list($data_url, $vendor_type)= Common::genPolicyDataUrl('image');
$this->assign('data_url', $data_url);
$this->assign('vendor_type', $vendor_type);
$this->assign('cacl_file_hash', Common::needCaclFileHash());
$this->display();
}
$container->ueditor('ueditor', '富文本')
->setConfig([
'serverUrl'=> U('/extends/ueditor/index').'?os=1&type=editor&vendor_type=tengxun_cos',
])
->setExtraScripts([
asset('/object-storage/os_upload.js'),
])