Typecho插件:AliOssForTypecho--使用AliyunOSS储存Typecho上传附件
2020年6月,本插件发布1.1.8版本。
2022年,humu更新插件,支持php8
。有需要的朋友请到Github自取。
更新内容
此版本修复了以前版本的一些BUG,做了一些改善,主要有:
- 使用aliyun-oss-php-sdk Release 2.3.1开发;
- 不再为每个文件创建单独的文件夹;
- 检测已上传过的文件,若存在同名文件,则自动命名为 name(1).ext,name(2).ext...;
- 优化了上传失败后的逻辑,详细记录失败日志,在插件配置页面即可看到;
- 增加新功能,可自定义图片处理样式;
祝使用愉快~
插件信息
插件名:AliOssForTypecho
作者:droomo
当前版本:v1.1.8
更新时间:2020-06-27
下载地址:https://github.com/droomo/AliOssForTypecho/archive/v1.1.8.zip
百度网盘:https://pan.baidu.com/s/1JeyjeFLLEYd2G4pRcL_O7w 提取码:bum0
Github地址:https://github.com/droomo/AliOssForTypecho
使用方法
- 下载插件,若github地址打不开,可通过百度网盘下载;
- 解压插件,将解压后的文件夹重命名为
AliOssForTypecho
; - 替换原来插件。
使用截图
另外针对评论中提议较多的做出一些解释:
Q: 为什么不根据文章id来归档?
A: 因为在上传附件时,插件并无法得到文章信息。根据日期归档是通常做法,与Wordpress保持一致。
历史版本:
插件使用说明:
- 插件基于aliyun-oss-php-sdk Release 2.3.0开发, 若以后SDK开发包更新导致插件不可用,请到 我的博客 ^ - ^获取新版本插件, 如果我还用typecho还用阿里云就会更新。
- 请赋予
文件上传目录
以及插件日志目录
写权限,否则可能导致上传失败。 - 若开启“在服务器保留备份”功能:
成功保存文件到OSS但没有成功保存到服务器的情况下插件不会报错, 这将导致当前文件在服务器上没有备份,但是会插件日志目录下生成错误日志"error.log",请定期查阅并清理。 - 运行在云应用引擎上的站点“在服务器保留备份”选项无效。
- 旧版本Typecho存在无法上传大写扩展名文件的bug,请更新Typecho程序。
配置详情:
可以把这一段文件稍微改一下,希望作者能在后续的更新中把文件名中的字符集自动替换成ascill码就好了
$newPath = urlencode($content['attachment']->path);
$newPath = str_replace('(', '%28', $newPath);
$newPath = str_replace(')', '%29', $newPath);
这两个
return 'https://' . $bucket_name . '.' . $end_point . '.aliyuncs.com/' . $userDir . $newPath . $diy_style;
return $cdnUrl . $userDir . $newPath . $diy_style;
换成newpath
谢谢贡献代码。
不过似乎不太好改,浏览器进行urlencode应该不会影响请求图片吧?不然假如文件名中包含!@#¥%……&*()此类字符,文件会访问不到吗?
遇到一个问题,如果上传相同文件名的图片,他就会把名字后面加一个(1),这种,但是阿里云那面的url不是typecho/2023/02/02/image(1).png,而是这种typecho/2023/02/02/image%281%29.png,可能这种重命名方式稍微有点问题
出现一个问题,同一台服务器上的两个虚拟服务器,一个部署文章博客,一个部署图片博客,都启用了本oss插件,设置也完全相同。A站点成功,B站点失败,但是在OSS中可以看到B上传的图。B上传时报错index.php/action/upload?_=4cbf0f4b658948d9a64c11a67c100fe2 500 (Internal Server Error),还请博主解惑
抱歉,问题找到了,是typecho的原因
你好,问下替换原来插件。这个要替换什么插件!新手有点不懂,请教一下博主
删除原来的,安装新的。
hello,我发现区域选择自定义后,在自定义EndPoint里面填写oss-accelerate会一直报错,但如果全填写
oss-accelerate.aliyuncs.com后,上传图片是正常的,但是穿后图片的地址会多出一个.aliyuncs.com,请问改如何处理,我是用阿里云的全地域节点。
可以把Plugin.php文件的663到666行改成如下试试:
$end_point = ($options->plugin('AliOssForTypecho')->endPoint === "other") ? $options->plugin('AliOssForTypecho')->otherEndPoint : $options->plugin('AliOssForTypecho')->endPoint . '.aliyuncs.com/'; return 'https://' . $bucket_name . '.' . $end_point . $userDir . $content['attachment']->path . $diy_style;如果不会改可以直接在cdn域名指定访问地址。