ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
### 后台配置 可通过(网站后台 > 设置 > 上传设置)对附件上传进行相关配置,包括的选项有附件大小、类型、保存规则、上传目录、图像处理等选项 **缩略图** - 缩放类型可选值为(0-6);0=关闭缩略图功能、1=等比例缩放、2=缩放后填充、3=居中裁剪、4=左上角裁剪、5=右下角裁剪、6=固定尺寸缩放。 - 任意一个选项设为0则不使用缩略图功能。 - 如需使用缩略图功能,缩略图的三个配置都需要有效配置。 - 缩放的宽度与高度必须大于0,否则就算定义了缩放类型大于0也不会使用此功能。 **水印功能** - 水印位置可选值为(0-10);1=等比例缩放、2=缩放后填充、3=居中裁剪、4=左上角裁剪、5=右下角裁剪、6=固定尺寸缩放。 - 水印位置设为0则不直接使用水印功能。 - 如需使用水印功能,需要先定义水印位置(1-10)后,然后定义图片水印路径或者文字水印名称,如果同时定义优先使用图片水印功能。 - 直接覆盖 ./public/images/water.png 可更改水印图片样式。 - 文字水印名称直接在上传配置里修改,如需更改字休,需要先将字体上传至 ./public/fonts 目录内,然后在上传置里定义字体名称。 ### 上传路径 上传的路径由框架自带API应用处理(apps/api/controller/upload.php),继承基类模板后可以在模板中使用模板标签`{$path_upload}`获取上传路径;在继承基类控制器后可以在控制器里通过`$this->site['path_upload']`变量获取。 ### 上传权限 可通过框架的基础模块(用户权限)控制用户上传权限,只需通过(网站后台 > 系统 > 前台权限)选择可上传的用户角色即可。 ### 表单上传 可直接在模板里通过 DcBuildForm 函数生成表单,只需定义表单元素为image或file,如需多选则给表单元单的 multiple 属性为true。 **上传实例** ``` {:DcBuildForm([ 'name' => 'demo/upload/save', 'class' => 'bg-white py-2', 'action' => DcUrl(['module'=>'demo','controll'=>'upload','action'=>'save']), 'method' => 'post', 'submit' => lang('submit'), 'reset' => lang('reset'), 'close' => false, 'disabled' => false, 'callback' => '', 'ajax' => true, 'items' => DcFormItems([ 'cms_cover' => [ 'order' => 1, 'type' => 'image', 'value' => $data['cms_cover'], 'title' => lang('cms_cover'), 'multiple' => false, ], 'cms_down' => [ 'order' => 1, 'type' => 'file', 'value' => $data['cms_down'], 'title' => lang('cms_down'), 'multiple' => false, ], ]), ])} ``` ### 按钮上传 1. 可通过给按钮或任意HTML元素添加一个名为(dc-upload)的class属性即可添加上传监听事件,data自定义属性为上传配置,实例如下: ``` <button class="btn btn-sm btn-secondary dc-upload" type="button" data-input="#upload" data-mime-types="{$Think.config.common.upload_mime_type|default='*'}" data-max-size="{$Think.config.common.upload_max_size|default='10mb'}" data-url="{$path_upload}" data-multiple="false" data-on-success="daicuo.form.upSuccess" data-on-error="daicuo.form.upError" data-on-complete="daicuo.form.upComplete">{:lang('upload')}</button> ``` 2. 除了通过预先定义htm元素属性的方式调用上传,还可以通过javascript直接调用,通常用于编辑器扩展以及未继承基类模板等场景,实例如下: ``` daicuo.upload.init({ element: '.dc-upload', container: 'dc-upload-parent', multiple: true, mimeTypes: 'image/*', onSuccess: function(up, file, xhr){ daicuo.browser.console(file); } }); $('.dc-upload').click(); ``` ### 上传文件钩子 **钩子名称** - upload_delete_before - upload_delete_after **钩子参数** ``` $params = array(); $params['file'] = $file;//表单file对象 $params['upload'] = false;//TP上传对象(SplFileObject) $params['result'] = false;//返回结果(开发时直接使用dump查看列表) ``` ### 删除文件钩子 **钩子名称** - upload_delete_before - upload_delete_after **钩子参数** ``` $params = array(); $params['mimeType'] = $mimeType;//文件类型 $params['attachment'] = $attachment;//删除原始文件 $params['item'] = [];//删除文件列表 $params['result'] = [];//删除结果列表 ```