百度云附件(BCS Support)——基于百度云存储BCS的Wordpress远程附件支持插件【原创】

2013-02-21

百度云存储(百度BCS)是国内为数不多的优秀云存储服务提供商之一,其速度和易用性都非常不错。更吸引人的是,目前百度云存储为用户提供包括5GB存储空间和每天每应用500MB网络流量在内的免费配额。即使超出了免费配额,价格也非常的低廉——流量:0.8元/GB,存储空间:0.02元/GB·天(约 0.6 元/GB * 月,与阿里云OSS价格相同)。

如此物美价廉的服务,绝对是个人站长值得使用的资源。为此,有热心的童鞋开发了一个叫做“BCS Support”的WordPress插件,从而可以利用百度BCS存储上传到WordPress的图片等多媒体文件。但是,该插件还是存在一些不足之处。比方说,文件上传到百度BCS后,文件只能存储在根目录,而不能如WordPress一样,可以按日期存储;只能上传原图,而不能把生成的略缩图一并上传;再比如,上传到百度BCS的多媒体文件,不能在WordPress后台同步删除。
百度云附件

优点:

正是因为这个插件还有一些不足,所以我利用业余时间,把这个插件几乎彻头彻尾地修改了一遍,并起名为“百度云附件”。“这个插件具有如下优点:

1.文件可以按日期分类存储;

2.上传图片的同时会将略缩图一并上传;

3.删除文件时,会与WordPress后台同步删除;

4.可以选择是否在本地服务器保留文件备份;

5.可以自定义域名——既可以选用bcs.duapp.com/bucket/filename形式,也可以选用bucket.bcs.duapp.com/filename形式。

安装步骤:

新版本v1.1已经发布,安装步骤有所简化,请移步:https://mawenjian.net/p/1018.html

那这个插件如何安装呢?非常简单,只需四步:

第一、从这里下载“百度云附件”插件,解压缩并上传到WordPress插件目录;(已经提交到wordpress.org,不就的将来有望通过WordPress后台直接安装)

第二、在插件管理面板启用“百度云附件”;

第三、设置 >BCS Setting,配置使用的Bucket、AK和SK。(注意,Bucket属性要设置成“公开读”)

第四、设置>多媒体,更改“默认上传路径”为'.'(表示存储在根目录);更改“文件的完整 URL 地址”为'http://{bucket}.bcs.duapp.com'或者'http://bcs.duapp.com/{bucket}'。当然,不一定非得存储在根目录,也可以存储在子目录,但一定要记得“默认上传路径”和“文件的完整 URL 地址”中的子目录一定要保持一致。(新版本中集成到插件管理页面)

百度云附件

注意:WordPress 3.5以后的版本没有此选项,需要到“/wp-admin/options.php”设置“upload_path”和“upload_url_path”参数,这两个对应的就是“默认上传路径”和“文件的完整URL地址”。

理论上,到这里就可以正常使用了。但你会发现,打开”媒体库“,好多图片不能正常显示了。这可怎么办?非常简单,把原来的文件都上传到百度BCS相应位置就OK了。

如果你想把原来文章的图片也替换成百度BCS存储,不妨执行下面的SQL语句:

UPDATE `wp_posts` SET post_content=REPLACE(post_content,'到原来附件目录的绝对URL','到远程附件目录的绝对URL');

例如:

UPDATE `wp_posts` SET post_content=REPLACE(post_content,'img.mawenjian.net/uploads/','mawenjian.bcs.duapp.com/uploads/');

缺点:

因为百度BCS目前不支持防盗链,所以对有防盗链需求的网友,使用这个插件就要谨慎了。

下载地址:http://url.ehan.cn/bcssupport

v1.0版本:http://url.ehan.cn/bcssupportv1

如果各位网友在使用过程中遇到了什么问题,或者发现了BUG,请在本页留言,我尽力予以解答。最后说一句,该插件的姊妹”阿里云附件“也即将发布。与百度BCS相比,阿里云OSS也有一定的免费配额(不过有时间限制),并且可以很好地支持防盗链。敬请期待!

 


除非特殊说明,本博客文章均为原创,转载请以链接形式标明博文地址。

本文链接地址: 百度云附件(BCS Support)——基于百度云存储BCS的Wordpress远程附件支持插件【原创】

分类:WordPress | 标签: |

175条评论

  1. 漱石说道:

    还要是麻烦马哥给写个采集的东西,要不上传到几百上千张图片的时候就麻烦了。

    • 马文建说道:

      我昨天刚向百度反馈了这个问题,看他们是否有诚意解决。如果他们连批量导入导出功能都没有,还是别用的好,免得被坑。要是只为了免费,可以用七牛,每个月10G,足够用了,而且可以绑定域名。

  2. 漱石说道:

    这个百度bcs目前已经是收费的吧!要是哪天超了,bcs好象不支持批量下载回本地。想把图片搬出来有点麻烦啊。好xiang。能加个下载回本地就好了!

  3. 漱石说道:

    不能给图片加水印!

  4. tong huang说道:

    在线搜索以后安装模式无错,只有在上传插件模式下出错,下面是提示:
    正在从/home/mfcom/domains/我的网址.com/public_html/wp-content/uploads/2013/09/carrington-mobile.zip下载安装包…
    下载失败。 URL无效

    • 马文建说道:

      多谢反馈,我尝试解决下吧。我想尽量在不禁用zip文件的前提下解决掉这个问题,不过目前还没有思路……
      原来gimhoy版本的插件也有这个问题啊。我以为gimhoy版本基本完善了,所以近期没对我的版本做升级,看来我还得动手码代码喽。

  5. tong huang说道:

    我不知道我发现的是不是个新问题,在安装了你这个插件以后感觉非常好,内心说实话很振奋(终于不愁图床了啊)...,这里我表示非常感谢!
    但今天早上在另一个插件的安装过程中(后台上传模式),提示不能加载这个插件,当时没在意,改用FTP把插件传了上去,回头查看了下媒体库,发现里面多了个插件的安装包,也就是说这个插件被上传到了百度云去了。
    我觉得是不是应该有个语句的判断,把附件和插件分开来!当然,这也算个小的建议,毕竟用FTP上传插件也可以达到效果,只是不方便一些!

    • 马文建说道:

      非常感谢您的反馈!这个问题好想是从1.2版本开始出现的,先前已经有网友反馈了,在另一篇文章的留言中有提及。只是我一直没有想到好的解决办法,所以问题一直没能得到解决。请问插件上传到bcs中的具体路径是什么?您是否还记得?
      另外,gimhoy版本的插件好像没有这个问题,如果现在这个插件影响您的使用的话,不妨换他的那个。

  6. 何刚说道:

    没听懂,SIP 是SKYPE不,没软件后台,怎么优惠

  7. imgiant说道:

    楼主,这个插件停用之后你没有说明要将路径改回来。这一点很重要。因为不这么做的话,基本上所有传上去的图都会挂掉。

    • 马文建说道:

      这还用说吗……禁用之后,URL发生变化,自然应当改回去……我写这个插件的时候因为百度云服务还处于邀请阶段,所以我默认所有使用插件的人都具有一定的基础。

  8. 10说道:

    无法启用插件,因为它引起了一个致命错误(fatal error)。
    Fatal error: Cannot redeclare bcs_set_options() (previously declared in /home/bae/wwwdata/codefs/0.suiyulu.duapp.com/wp-content/plugins/BCS-Support_v1.2.2/bcs-support.php:30) in /home/bae/wwwdata/codefs/0.suiyulu.duapp.com/wp-content/plugins/BCSSupport/bcs-support.php on line 38

  9. 爱淘金客说道:

    博主好,我改用七牛,用了水煮鱼开发的插件,然后停用了百度BCS Setting,然后打开网站就只剩文字了,怎么办?

  10. firewolf189说道:

    我在bae上传图片总是http错误, 快疯了, 麻烦帮我看下

  11. mylaner说道:

    功能不错!试用看看!

  12. 刺猬说道:

    我想知道有哪些云储存可以把wordpress上传的图片同步在云储存中,并且可以删掉wordpress保存的图片而不受影响,这样可以节约网站空间。或者有没有那个储存可以同步外链到网站而不保存图片再网站空间里?总之就是图片原件不在网站空间里。谢谢

    • 马文建说道:

      首推又拍云,荒野无灯的插件是最稳定的。另外还有百度云、阿里云、盛大云,都有我写的,但是还不够强大,部分主机(主要是Windows)会报错,但目前还没有找出原因……所以如果用我写的插件,最好先做好测试工作,以免耽误事。

  13. 我是猪说道:

    怎么留言不见了,我表达不是很好,这样说吧,我想知道有哪些云储存可以把wordpress上传的图片同步在云储存中,并且可以删掉wordpress保存的图片而不受影响,这样可以节约网站空间。或者有没有那个储存可以同步外链到网站而不保存图片再网站空间里?谢谢

    • 马文建说道:

      评论需要审核的。
      首推又拍云,荒野无灯的插件是最稳定的。另外还有百度云、阿里云、盛大云,都有我写的,但是还不够强大,部分主机会报HTTP错误,不过目前还没有找出原因……

  14. 我是猪说道:

    哇,你是我见过回复效率最高的自博客人(也算自媒体吧)。我应该没表达清楚,我想知道存储在百度云里面的图片外链是否可以通过插件直接对应在wordpress的文章中,而不是我存储在百度云了然后点击复制外链然后黏贴在wordpress发布文章中,插件是否可以直接完成这个工作?

    • 马文建说道:

      哈哈,谢谢,博客不过是用来休闲的罢了,没有当成事业,所以回复速度多少会快一些。
      可以的,这个插件的作用就是把上传到WP的媒体文件上传到BCS,依靠WP发挥作用,上传的图片在日志编辑器中即可完成插入操作,不需粘贴URL。
      另外,所有评论都需要审核,所以未能显示,还望见谅啊!

  15. 我是猪说道:

    请问可以直接存储在云空间外链到网站吗,这样不占网站的空间

  16. 小雄说道:

    怎么说呢,设置都正确了,但是总是显示:发生了一个错误,上传“screenshot.jpg”失败
    无法建立目录 uploads。有没有上级目录的写权限?

  17. vv说道:

    有两个问题。我用的环境是bae
    1,未用插件前,wp特色图片正常,装插件后,特色图片在前台不显示,图片地址为空。
    2,不提供卸载,停用插件后,后台多媒体图片路径没改回来

    • 马文建说道:

      你说的前台应该是“管理后台”吧,我在文章中已经提到了:
      “理论上,到这里就可以正常使用了。但你会发现,打开”媒体库“,好多图片不能正常显示了。这可怎么办?非常简单,把原来的文件都上传到百度BCS相应位置就OK了。”

      卸载后,多媒体路径,到“/wp-admin/options.php”重新设置“upload_path”和“upload_url_path”参数即可。

      如果不想将已经上传到BCS的文件了,用SQL语句
      “UPDATE `wp_posts` SET post_content=REPLACE(post_content,’到原来附件目录的绝对URL’,'到远程附件目录的绝对URL’);”
      替换掉即可啊。

  18. exploit说道:

    这个东西应该支持下 自定义域名的设置
    如果让搜索引擎看见内容全部外链的站外的话好像影响seo

    • 马文建说道:

      还有这么一说?请问我的网站网址是mawenjian.net,使用二级域名img.mawenjian.net存放附件,是不是也影响SEO?门户网站通常采用不同的域名存放啊。谢谢!

  19. 江家达说道:

    是不是不能用在WIN+PHP主机上~

  20. Yusky说道:

    好像很不错的样子,不知道稳定不~~·就是百度云比较蛋疼

  21. 如何设置上传文件类别?比如只上传mp3 不上传 jpg?

    • 马文建说道:

      这个是不支持的,因为图片和MP3文件件使用的URL中域名是相同的,所以不能分别放在两台不同的服务器上。
      MP3文件不建议通过插件上传,因为可能会因文件过大出现php上传超时或超过php允许的最大文件的情况。我更建议使用百度PCS(网盘)存储MP3等大文件,或者将MP3文件通过百度Web管理面板上传到百度BCS中。

  22. kk_钦说道:

    请问,要像附件一样,在文章那里,相当于网盘使用可以吗

  23. V说道:

    这下白瞎了...

  24. V说道:

    最新的3.5.1没有路径设置

  25. 周鹏说道:

    什么都设置好了,结果首页打不开,关闭插件就好了,难道上天不给我用啊 求帮助

  26. 彭俊豪说道:

    请问BAE是干什么的?用它装图片有什么好处呢?

    • 马文建说道:

      BAE是百度应用引擎,和百度云存储BCS并不相同。使用BCS的好处,大约有几个:将附件存放于BCS,可降低存储费用(BCS是按需付费的);减少服务器负载;百度的线路和稳定性不容置疑,显著提高网站载入速度。

  27. MT说道:

    貌似偶尔上传会失败?提示http通信错误,然后就是缩略图生成失败..求解..

    • 马文建说道:

      谢谢反馈。http通信错误可能是因为百度api接口或者你的服务器网络的原因。你的网站是不是位于海外?网络层面的问题插件不好解决,除非提供重传机制。让我好好想想,忙过这段时间出个新版本的。

  28. 小而美说道:

    我的是3.51版,有默认上传路径”和“文件的完整URL地址”。选项,但为什么上传错误呢。

  29. 卡哇伊YYC说道:

    上传得图片都变成了PNG格式 ,是不是云存储处理不了啊!!!

  30. HeroWong说道:

    我在用百度的ueditor编辑器,这个编辑器上传图片默认路程是wp-contentpluginswp-ueditorueditoruploads下,现在我想调用你的BSC_Support,让这个编辑器上传的图片也上传到Bucket上,请问一下怎么调用?

  31. 很管用!!!强烈推荐

  32. xing说道:

    其实在3.5的版本里把数据库options里的upload_url_path值填上,后台的设置选项就出来了,
    但是如果设置了upload_path,返回的地址是错误,导致文件实际传了,但是返回的url里没有upload_path 部分而无法显示

  33. zhujianfeng说道:

    谢谢博主写的好东西,不过要直接修改数据库里post的内容貌似有点暴力,万一哪天不想用云存储了岂不是还要手动再改回去? 我给你的插件稍微加了点功能,不需要手动改数据库,算我提交的patch了,你看下能接受我这个pathc不?http://www.zhujianfeng.info/?p=196

    • 马文建说道:

      哈哈,谈不上暴力吧,所有操作一个SQL语句即可实现。
      有patch好啊,我的插件随便改,方便使用就好。
      不过话说,你这个功能对wp的性能有影响,一次浏览一次检测,感觉没有必要啊。倒不如直接SQL修改方便,不想用了的话,一个SQL改回去就行了。

  34. 仙人掌嘿嘿说道:

    我想从SAE迁到BAE,要把原来的图片也迁到BCS,要怎么把所有图片按原来目录结构放到Bucket里?

  35. annool说道:

    {"Error":{"code":"2","Message":"object not exists","LogId":"1900482725"}} ,上传一首歌,打开是这种样子。怎么办

  36. 小刀说道:

    我找到办法了访问options.php设置搞定了谢谢了,真心谢谢你这款插件文章我转载了

  37. 小刀说道:

    为什么设置多媒体没有默认路径,3.5以上版本取消了是么

  38. sunflare说道:

    我想问一下如果不想上传缩略图应该怎么办。。因为想导入到nextgen里面自建缩略图,如果用插件的话缩略图就泛滥了- -

    • 马文建说道:

      暂时没有考虑过不上传略缩图的情况,所以如果想不上传略缩图,只能人工修改代码。从插件中删除下列代码(不要使用记事本):
      //上传小尺寸文件
      if (isset($metadata['sizes']) && count($metadata['sizes']) > 0)
      {
      //there may be duplicated filenames,so ....
      foreach ($metadata['sizes'] as $val)
      {
      $object = ltrim( $upload_path.$wp_upload_dir['subdir'].'/'.$val['file'] , '/' );
      $file = $wp_upload_dir['path'].'/'.$val['file'];
      $opt =array('Content-Type' => $val['mime-type']);
      _file_upload ( $object, $file, $opt );

      //如果不在本地保存,则删除
      if($oss_nolocalsaving)
      _delete_local_file($file);

      }
      }

  39. 米饭维谷说道:

    你的评论数据恢复了

  40. 米饭维谷说道:

    怎么会这样子?

  41. 南寻说道:

    BAE现在收费了,感觉图片还是放在主机比较好...

回复 马文建 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注