一、 插件配置
在使用腾讯COS之前请先到腾讯云存储对象添加一个存储桶,然后到存储桶详情,获取到以下相关配置信息填写到后台插件管理配置中去。
后台配置 | 腾讯云配置 |
---|---|
AppID、SecretId、SecretKey | 个人信息->访问管理->API密钥管理 |
存储桶名称 | 概览->基本信息->存储桶名称 |
地域名称 | 概览->基本信息->所属地域(英文) |
上传接口地址 | 概览->域名信息->访问域名 |
CDN地址 | 请使用腾讯云存储详情->域名与传输管理->默认CDN加速域名中的加速域名或自定义CDN加速域名中的域名 |
在腾讯云COS存储桶的安全管理的跨域访问CORS设置,添加一个全局跨域规则便于开发,上线后可修改为只允许你指定的域名进行跨域上传,跨域配置如图:
跨域配置规则请参考腾讯云官方跨域配置:https://cloud.tencent.com/document/product/436/13318
在腾讯COS存储桶域名与传输管理的自定义加速域名中添加一个你自己的CDN域名
在腾讯云COS存储桶的基础配置的静态网站中开启访问
在腾讯云COS存储桶的权限管理的存储桶访问权限中开启公有读私有写
在腾讯云CDN内容分发网络的域名管理找到我们自定义的域名管理,进入到高级配置中的HTTP Header配置,添加一项参数为Content-Disposition,取值为inline;filename=FileName.txt的项
配置成功后即可在后台直接上传文件至腾讯COS。
文档最后更新时间:2022-08-23 15:51:46
二、 自定义参数
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
<div class="col-xs-12 col-sm-8">
<div class="input-group">
<input id="c-image" class="form-control" size="50" name="row[image]" type="text">
<div class="input-group-addon no-border no-padding">
<span><button type="button" id="plupload-image" data-utype="ads" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
<span><button type="button" id="fachoose-image" data-utype="ads"class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
</div>
<span class="msg-box n-right" for="c-image"></span>
</div>
<ul class="row list-inline plupload-preview" id="p-image"></ul>
</div>
</div>
修改文件public/assets/js/addons.js 大约在192行
Fast.api.ajax({
url: "/addons/cos/index/params",
data: {
method: 'POST',
category: category,
md5: md5,
name: file.name,
type: file.type,
size: file.size,
chunk: chunk,
utype: $(that.element).data("utype") || '',
chunksize: that.options.chunkSize,
costoken: Config.upload.multipart.costoken
},
}, function (data) {
...
}, function () {
that.removeFile(file);
});
修改文件addons/cos/controller/Index.php添加接收值更改返回值
public function params(){
...
$utype = $this->request->post('utype');
...
$params['utype'] = $utype;
$this->success('', null, $params);
return;
}
/**
* 服务器中转上传文件
* 上传分片
* 合并分片
* @param bool $isApi
*/
public function upload($isApi = false){
...
$utype = $this->request->post("utype");
if ($chunkid) {
...
}else{
...
if (strpos($url, '.jpg') || strpos($url, '.png')|| strpos($url, '.bmp')|| strpos($url, '.jpeg')|| strpos($url, '.gif')) {
if(in_array($utype,['ads','logo','navigation'])){
$this->success("上传成功", '', ['url' => $url, 'fullurl' => cdnurl($url, true)]);
}else{
$this->success("上传成功", '', ['url' => $url.'/watermark', 'fullurl' => cdnurl($url.'/watermark', true)]);
}
}else{
$this->success("上传成功", '', ['url' => $url, 'fullurl' => cdnurl($url, true)]);
}
return;
}
}
备注:
腾讯云COS和百度UMeditor编辑器本地上传图片后图片路径出现问题
修改文件public/assets/addons/umeditor/dialogs/image/image.js 约105行var $img = $("<img src='" + editor.options.imagePath + url.replace(editor.options.imagePath,'') + "' class='edui-image-pic' />"), $item = $("<div class='edui-image-item edui-image-upload-item'><div class='edui-image-close'></div></div>").append($img);
微信小程序使用腾讯云cos图片 小程序的网络请求的 referer 是固定格式为:https://servicewechat.com/{appid}/{version}/page-frame.html。 如果存储桶打开了防盗链限制,并且需要允许小程序加载 COS 图片,请在 对象存储控制台 配置防盗链白名单:servicewechat.com。
参考链接:
腾讯云COS设置防盗链: https://cloud.tencent.com/document/product/436/13319