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'),
    ])