Typecho插件:AliOssForTypecho--使用AliyunOSS储存Typecho上传附件

2020年6月,本插件发布1.1.8版本。


2022年,humu更新插件,支持php8。有需要的朋友请到Github自取。


更新内容

此版本修复了以前版本的一些BUG,做了一些改善,主要有:

  1. 使用aliyun-oss-php-sdk Release 2.3.1开发;
  2. 不再为每个文件创建单独的文件夹;
  3. 检测已上传过的文件,若存在同名文件,则自动命名为 name(1).ext,name(2).ext...;
  4. 优化了上传失败后的逻辑,详细记录失败日志,在插件配置页面即可看到;
  5. 增加新功能,可自定义图片处理样式;

祝使用愉快~

插件信息

插件名: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

使用方法

  1. 下载插件,若github地址打不开,可通过百度网盘下载;
  2. 解压插件,将解压后的文件夹重命名为AliOssForTypecho
  3. 替换原来插件。

使用截图

使用截图


另外针对评论中提议较多的做出一些解释:
Q: 为什么不根据文章id来归档?
A: 因为在上传附件时,插件并无法得到文章信息。根据日期归档是通常做法,与Wordpress保持一致。

历史版本:

插件使用说明:

  • 插件基于aliyun-oss-php-sdk Release 2.3.0开发, 若以后SDK开发包更新导致插件不可用,请到 我的博客 ^ - ^获取新版本插件, 如果我还用typecho还用阿里云就会更新。
  • 请赋予 文件上传目录 以及 插件日志目录 写权限,否则可能导致上传失败。
  • 若开启“在服务器保留备份”功能:
    成功保存文件到OSS但没有成功保存到服务器的情况下插件不会报错, 这将导致当前文件在服务器上没有备份,但是会插件日志目录下生成错误日志"error.log",请定期查阅并清理。
  • 运行在云应用引擎上的站点“在服务器保留备份”选项无效。
  • 旧版本Typecho存在无法上传大写扩展名文件的bug,请更新Typecho程序。

配置详情:

aliossfortypecho配置.jpg

转载请注明原文链接:http://www.droomo.top/AliOssForTypecho.html

Tag: typecho, plugin, aliossfortypecho, alioss, oss

84 comments

  1. 雪山凌狐 雪山凌狐

    您好,请问 OSS 的 bucket 是否必须设置为“公共读”的权限才能正常访问图片呀?
    我进行了测试,如果设置 bucket为 “私有” 的话,似乎需要鉴权,目前插件中暂时没有找到相关届时可以解决该问题。
    设置为 “公共读” 权限可以读取,但是我有点担心被人偷跑流量。
    既然插件中已经配置了 ACCESS KEY ID 和 ACCESS KEY SECRET,理论上应该是可以通过他们来获取私有访问地址的。请问插件后续版本能否考虑该项提升?
    谢谢!因为我对于 php 了解不多,如果需求不合理,也可以持续进行讨论,谢谢您!

    1. 雪山凌狐 雪山凌狐

      也一起提了一个 Issue:
      https://github.com/droomo/AliOssForTypecho/issues/1

      1. moon moon

        目前Typecho发表文章的逻辑是(typecho版本是v1.*,没有用其他的文章编辑器插件),上传附件后将附件的永久链接写死在文章的content,在页面显示时通过Markdown解析器解析成html。
        理论上可以通过渲染前根据附件prefix过滤并替换掉输出的html中的附件链接。但实际上做起来相当复杂,要考虑到使用插件的博主更换过域名的情况等等…
        所以这个需求不太好做,目前没有加上该功能的计划。

        从网站运营角度,也建议使用公共读OSS作为博客的文件后端,因为:

        网站访问者并没有OSS的写权限;网站访问者没有权限获取OSS文件列表;以上两条本身就符合服务器文件上传和读取的逻辑。

        如果担心流量被盗用,可以在阿里云后台设置OSS或者CDN的HTTP Referer 白名单,设置好后能达到的效果:

        在白名单中的网站可以正常显示附件;他人盗用附件后会出现403错误;(可选)用户在空白浏览器tab中访问附件出现403错误。
        这也是我目前使用的策略。

        祝好!

        1. 雪山凌狐 雪山凌狐

          您好,经过与阿里云官方人员的沟通,发现阿里云目前支持“私有”仓库展示的。

          实现方案为:

          结合阿里云的 CDN,这个支持私有仓库回源。首先 CDN 绑定域名,设置好要求的 TXT 和 CNAME 解析记录。然后在 OSS 中绑定加速 CDN 的域名,这样操作的结果为:用户访问自定义域名→访问 CDN 进行分发→CDN 回到 OSS 源站寻找资源并展示。此时,经过测试,OSS 源站设置为“私有”仍可以被读取。从阿里云公布的 OSS 外网流出费用和 CDN 流出费用比较来看,后者便宜更多,还有加速的效果,同时也能支持仓库设置为“私有”。

          此时在站点后台配置插件端,无需做任何配置更改,跟插件官方教程一样即可,唯一的区别是插件的配置中自定义(CDN)域名的部分,填写自定义的域名即可,注意域名填写完毕后,结尾记得加上/符号。

          在添加成功 CDN 后,在 CDN 配置的回源配置可以勾上这个就可以私有了。

          参考资料:
          https://help.aliyun.com/document_detail/57653.html?spm=5176.11785003.domainDetail.16.e7e4142fpCrUTh

        2. 雪山凌狐 雪山凌狐

          好哒,谢谢

  2. 锴

    插件很好用,老哥加油!

  3. zhengzurui zhengzurui

    博主你好,我使用的是这个插件,非常棒,现在有一个问题就是上传10M左右的文件没问题,10M以上经常上传失败,这是为什么?

  4. lijia lijia

    老哥请教下,怎么每张图片都会生产一个单独的文件夹呢?怎么不要生成,谢谢

    1. lijia lijia

      因为有日期来区分图片归档了, 还生成一张图片一个文件夹,这个我觉得很繁琐,必须的话后台加个开关,谢谢

      1. Defectink Defectink

        原作大佬好像有段时间没回复了,于是我简单的自己修改了一下。把一个图片一个文件夹给取消了,但是要注意文件名不能重复。还顺便添加了可以使用oss的图片处理样式。不用再手动在链接的尾部加样式了。
        大佬的作品还是很棒的,我只是在瞎改而已
        下载地址:http://114.98.234.56:8010/root/aliossfortypecho

        1. asd asd

          添加图片处理样式,支持自定义规则 这个怎么使用

          1. Defectink Defectink

            抱歉地址换的有点频繁……
            https://www.defectink.com/defect/AliOssForTypecho.html

          2. Defectink Defectink

            地址换了:https://github.com/DefectingCat/AliOssForTypecho-
            添加图片样式就是在图片域名后面加上自定义分隔符
            可以来这里给我留言:https://www.defectink.com/defect/143.html

      2. MOLI MOLI

        我也是这样觉得的,而且我建议使用主题的id来归档,如果用时间来归档,管理有点麻烦

  5. 梁晓斌 梁晓斌

    你好,大佬,请教一下,我配置好之后,上传图片打不开是什么怎么原因呢?出现这样的链接 https://www.liangxiaobin.com/uploads/2018/10/21/939662389803646/3739563303.jpg,

    阿里云上的链接就可以打开https://www.liangxiaobin.com/uploads/2018/10/21/937742703968305/3739563303.jpg?Expires=1540097627&OSSAccessKeyId=TMP.AQFk7IdjFX5cCmDejqQG8U2Y9dDTXD8A_bxEDlBRfQE7Vzte7qCwSp0f_W-fMC4CFQC4mGm1oh0oF83zHQKq3fEbQwykTgIVAIFvhYpmxsOFaY-TLHAwjzqi5qqQ&Signature=BRc%2BSm1yvdiliYtOEpqJNMvy2uI%3D

    1. moon moon

      你贴的两个链接都是你的博客地址,请检查阿里云资源地址是否配置正确。
      若没有问题,请把阿里云OSS的Buket权限设置为公共读取。

Leave a new comment