立即注册 登录
彼岸网 返回首页

天香公主的个人空间 http://www.bian-wang.com/discuz/?10005 [收藏] [复制] [分享] [RSS] txgz999@yahoo.com

日志

Discuz系统学习:远程附件

热度 4已有 812 次阅读2016-5-28 11:07 AM |个人分类:Discuz| 网站服务器, 空间, 软件

1。远程附件设置

Discuz软件提供了一个远程附件的功能,启用后能将站内上传的各种文件(如日志文章帖子里加的相册图片和文章帖子里加的附件)都放在和网站服务器分离的一个远程空间里去。谢谢网友 carry0987 提供了这样一个空间,让我能有机会测试下这个功能。他提供的远程空间信息是(文中的用户名和密码是虚拟的):
  • FTP主機IP: 31.170.165.167
  • FTP主機名: ftp.qbnehs.esy.es
  • FTP用戶名: u123456784
  • FTP密碼: A1234567
在我的测试网站 http://distst.website/dz32 上的管理中心的全局->上传设置->远程附件里做了如下设置:


主动模式和被动模式是FTP通信里的两种工作模式,名称源于服务器端是否向客户端发起连接,见 http://www.slacksite.com/other/ftp.html 里的介绍。有些FTP服务器只支持主动模式,有些只支持被动模式(如Godaddy),有些两种都支持。FTP客户端必须用服务器端支持的模式来和服务器通信。

下面是在看到的远程空间里的内容:

在设置时填写的'远程附件目录'(我上面填的是test)相当于基本设置里的'本地附件保持位置'(默认值是./data/attachment),两者下面有同样的文件夹结构。

现在在日志文章相册和论坛里加的图片和附件都到了远程空间:

而且在相册里将图片删掉和论坛里将附件删掉后,它们在远程空间里也立刻消失了。
再从cPanel进入我的网站服务器里看,那些上传文件都没存在网站服务器里,而只存在了远程空间里。网站服务器上只有空文件夹。



2。如何在程序里接触远程附件

先看看如何在程序里得到远程附件里的设置值。它们的值在程序里都可以按它们的设置名来获取: getglobal('setting/ftp/设置名') 或 $_G['setting']['ftp']['设置名'] 。下面是那些设置项的标签和设置名的对应表:
  • 启用远程附件 on
  • 启用 SSL 连接 ssl
  • FTP 服务器地址: host
  • FTP 服务器端口: port
  • FTP 帐号: username
  • FTP 密码: password
  • 被动模式(pasv)连接: pasv
  • 远程附件目录: attachdir
  • 远程访问 URL: attachurl
  • FTP 传输超时时间: timeout
  • 允许的附件扩展名: allowedexts
  • 禁止的附件扩展名: disallowedexts
  • 附件尺寸下限: minsize
  • 隐藏远程附件真实路径: hideurl
比如'启用远程附件'设置值可用 getglobal('setting/ftp/on') 或 $_G['setting']['ftp']['on'] 来得到。

PHP提供了一整套与远程空间联系的FTP客户端函数,见 http://php.net/manual/zh/ref.ftp.php,而Discuz将它们包在了一个叫discuz_ftp的单例模式的类里,定义在文件source/class/discuz/discuz_ftp.php里。然后又在文件source/function/function_core.php里定义了函数 ftpcmd 作为统一入口来调用discuz_ftp类里的各函数。所以所有用到Discuz里远程附件功能的地方就只要调用这个函数就行了。

下面以在相册里上传图片为例看看是如何用这个函数的。在上传图片时,浏览器给网站服务器发了下面的请求: POST /discuz32/misc.php?mod=swfupload&action=swfupload&operation=album HTTP/1.1 在服务器端是由下面这些脚本文件来传递和合作处理这个请求的: misc.php => source/module/misc/misc_swfupload.php => pic_save in source/function/function_spacecp.php 上传后的图片先存在了网站本地附件目录里。如果网站启用了远程附件的话,会将刚存在本地的图片拷贝到远程空间去,然后再删除本地图片。其中用到 ftpcmd 的相关代码就在函数 pic_save 内: if(getglobal('setting/ftp/on')) { $ftpresult = ftpcmd('upload', 'album/'.$upload->attach['attachment']); if($ftpresult) { @unlink($_G['setting']['attachdir'].'album/'.$upload->attach['attachment']);

发表评论 评论 (25 个评论)

回复 carry0987 2016-11-24 09:17 PM
东风: 谢谢您,Carry, 因为还涉及每个月收费挂靠银行卡的问题, 等周末让亲友帮忙吧; 再次感谢,感恩节快乐~
好吧,感恩節快樂!
回复 东风 2016-11-24 05:04 PM
carry0987: 啊,這個我可以幫忙,手機驗證不是問題
谢谢您,Carry, 因为还涉及每个月收费挂靠银行卡的问题, 等周末让亲友帮忙吧; 再次感谢,感恩节快乐~
回复 carry0987 2016-11-21 01:12 AM
东风: 谢谢您,搜寻了下,七牛真的不错, 但是有个问题:它的存储结构不是目录树形的(key/value), 以前发表的主题不知道能否支持.
还有一个就是几个云除了阿里都有的 ...
啊,這個我可以幫忙,手機驗證不是問題
回复 东风 2016-11-20 09:00 PM
carry0987: 不考慮七牛?
谢谢您,搜寻了下,七牛真的不错, 但是有个问题:它的存储结构不是目录树形的(key/value), 以前发表的主题不知道能否支持.
还有一个就是几个云除了阿里都有的问题:注册需要国内的手机验证!!
回复 carry0987 2016-11-20 11:32 AM
东风: 我在犹豫着到底用阿里云还是又拍云,纠结中,但是到了不得不设置远程附件的时候了。不知用过的先辈们能否不吝赐教 。我们的附件达到30g了   ...
不考慮七牛?
回复 东风 2016-11-19 07:10 PM
sesemule: 对,第三方网盘都是为了推他们自己的服务,不会甘心默默地躲在背后,
我在犹豫着到底用阿里云还是又拍云,纠结中,但是到了不得不设置远程附件的时候了。不知用过的先辈们能否不吝赐教 。我们的附件达到30g了
回复 sesemule 2016-5-30 11:42 AM
天香公主: 我刚试了试这篇里的链接 http://www.bian-wang.com/discuz/home.php?mod=space&uid=10005&do=blog&id=819,那些都是网友放在Dropbox上的pdf文件。的确用户体验不 ...
对,第三方网盘都是为了推他们自己的服务,不会甘心默默地躲在背后,
回复 天香公主 2016-5-30 10:53 AM
sesemule: 云盘插件的原理是:调用API上传附件到云盘,同时返回一个地址插入帖子内容。这里首先就存在一个风险,如果云盘改了文件分享地址格式,云盘的用户没有影响,但是 ...
我刚试了试这篇里的链接 http://www.bian-wang.com/discuz/home.php?mod=space&uid=10005&do=blog&id=819,那些都是网友放在Dropbox上的pdf文件。的确用户体验不好,点击后不打开文件,而是跳出个窗口问我要不要装App。
回复 sesemule 2016-5-30 07:58 AM
天香公主: 谢谢介绍,我没用过云盘。有点不解,为什么'万一云盘商停止服务,搬迁附件就太麻烦了'?
云盘插件的原理是:调用API上传附件到云盘,同时返回一个地址插入帖子内容。这里首先就存在一个风险,如果云盘改了文件分享地址格式,云盘的用户没有影响,但是论坛附件地址就会失效。(印象中百度网盘就改过一次)再有,点击附件地址后是跳转到云盘页面下载的,用户体验不好;云盘页面上还会用较大字体提示登录下载,会对用户造成一定困扰。还有,如果附件是图片,无法像远程附件一样直接显示图片。还有,删除帖子不能自动删除相应附件导致浪费空间……基本上是这样的,使用云盘插件就相当于用户把云盘的文件地址粘贴到帖子里,只不过精简了打开云盘官网登录上传复制粘贴的过程。

如果是用户登录自己的云盘上传附件的形式,一旦云盘商停止服务,用户云盘里的东西就完全无法控制了;如果是统一上传到站长云盘的形式,会好一点。也许我之前夸大了迁移云盘附件的难度,因为认真想了一下,迁移远程空间附件也挺麻烦的,也要动数据库。远程空间的最大好处是我上一段提到的,给用户一个统一的体验,不用跳出本站。

您在彼岸发布文件,本来可以用微软或者谷歌的网盘,但是还是用的彼岸自己的上传文件功能,也是基于这一点吧?不用跳转到第三方网盘,体验良好。
回复 天香公主 2016-5-30 06:17 AM
sesemule: 云盘商肯定不想分流自己的用户:如果为中小网站提供远程空间支持的话,网站的用户虽然在用云盘商的产品却仍然只是网站的用户,甚至都不知道自己在用云盘; 这种 ...
谢谢介绍,我没用过云盘。有点不解,为什么'万一云盘商停止服务,搬迁附件就太麻烦了'?
回复 sesemule 2016-5-30 04:21 AM
天香公主: 我不明白为什么不能用云盘来做网站的储存空间,也许它们不支持ftp,但它们也提供了自己的API,感觉用那些API就能够将文件放到云盘上去吧?我刚才想下载百度云的A ...
云盘商肯定不想分流自己的用户:如果为中小网站提供远程空间支持的话,网站的用户虽然在用云盘商的产品却仍然只是网站的用户,甚至都不知道自己在用云盘; 这种生意做起来的话只能向网站收费,想象空间太小——比如又拍云就是这样做的嘛,很明显他们的用户群就不够大,百度们不会满足了做一个又拍云。

另外,很多云盘商在开发云盘产品的时候都为Discuz提供了插件接口,像华为、网易云笔记甚至由官方出面为Discuz量身定做了插件;安装了相关插件后,在帖子发布面板上就会多出一个上传附件到云盘的按钮,跟正常上传附件的体验非常类似。有的插件会让用户自己登录账号之后再上传,附件就上传到了用户自己的云盘空间;有的插件不需要用户登录账号,附件就上传到了站长的云盘空间。总之,您想到的用云盘代替附件这一方案,确实已经有了相对靠谱的选择。

我没有用云盘插件,原因是:无法保证哪一家云盘商是可以一直运营下去的。像新浪微盘,说关就关了。用云盘管理附件的话,万一云盘商停止服务,搬迁附件就太麻烦了。——但是如果用远程空间,却可以方便地用FTP下载再上传,没有隐患。
回复 天香公主 2016-5-30 01:49 AM
sesemule: 国内可能也有便宜的,但是靠谱的差不多都是1G空间每年要七八百元。像您说的360百度腾讯等提供的网盘那是大公司在布局云存储,跟服务小网站的空间商是不一样的。
...
我不明白为什么不能用云盘来做网站的储存空间,也许它们不支持ftp,但它们也提供了自己的API,感觉用那些API就能够将文件放到云盘上去吧?我刚才想下载百度云的API介绍看看,结果不让我下载,也许先要在那登录?
回复 sesemule 2016-5-30 01:29 AM
天香公主: 哦,明白了,是在域名服务商那的设置。那样好,用户接触图片不需要经过你的网站。

又拍云的服务器在美国,也许是美国开销低些?那你网站里的国内用户看图片会慢 ...
确实会慢一些,影响也不算太大,因为我觉得大家可以接受图片加载慢的现状(以前使用美国空间的时候经常有网友跟我抱怨说太慢了,现在却从来没听人说过图片显示的慢)。
回复 天香公主 2016-5-29 10:17 PM
sesemule: 我又去看了下,并没有又拍云的插件;是在又拍云网站上的“域名管理”功能中设置域名绑定,然后在域名服务商处设置相应的CNAME,生效后就可以用自己的二级域名显 ...
哦,明白了,是在域名服务商那的设置。那样好,用户接触图片不需要经过你的网站。

又拍云的服务器在美国,也许是美国开销低些?那你网站里的国内用户看图片会慢些吧,也许感觉不出?
回复 sesemule 2016-5-29 10:06 PM
天香公主: 哦,那你应该是装了又拍云提供的插件,那个插件能去又拍云找到p.jiulu.info和jiulu.b0.upaiyun.com的对应关系。
我又去看了下,并没有又拍云的插件;是在又拍云网站上的“域名管理”功能中设置域名绑定,然后在域名服务商处设置相应的CNAME,生效后就可以用自己的二级域名显示又拍云的附件了。
回复 sesemule 2016-5-29 10:06 AM
天香公主: 哦,我还以为国内空间便宜,因为听朋友说360等网站提供多少个T的云盘都是免费的。

godaddy现在最低档的服务也有100G了。你把网站搬到国内服务器上后,是不是国 ...
国内可能也有便宜的,但是靠谱的差不多都是1G空间每年要七八百元。像您说的360百度腾讯等提供的网盘那是大公司在布局云存储,跟服务小网站的空间商是不一样的。

我曾经搬迁到香港,就比美国快点了;再搬迁到国内,确实更快了。我这里打开彼岸,大概比打开我自己的网站多一两秒的延迟。但是吧,你要知道网友们的标准是很不一样的,有人觉得挺好,有人会觉得比百度慢多了……
回复 天香公主 2016-5-29 09:24 AM
sesemule: 没有在网站上设置,是又拍云提供的服务,就是直接把相应网址(比如我用的是p.jiulu.info)解析到又拍云上就行,显示的就是自己的网址(p.jiulu.info)但是实际上 ...
哦,我还以为国内空间便宜,因为听朋友说360等网站提供多少个T的云盘都是免费的。

godaddy现在最低档的服务也有100G了。你把网站搬到国内服务器上后,是不是国内人都觉得网站快多了?
回复 carry0987 2016-5-29 08:54 AM
天香公主: 文中有设置页的截屏,好象用的基本上都是默认选择。不知你是在那里点击'测试远程附件'没成功还是用的时候没成功?要不你照我图中的设置再试试? ...
回复 天香公主 2016-5-29 08:40 AM
sesemule: 没有在网站上设置,是又拍云提供的服务,就是直接把相应网址(比如我用的是p.jiulu.info)解析到又拍云上就行,显示的就是自己的网址(p.jiulu.info)但是实际上 ...
哦,那你应该是装了又拍云提供的插件,那个插件能去又拍云找到p.jiulu.info和jiulu.b0.upaiyun.com的对应关系。
回复 sesemule 2016-5-29 08:03 AM
天香公主:    我看了你的网站。用的就是远程附件吧?不知在设置时有哪些讲究?用的是又拍云吗?好象是美国的服务器。是不是在你的网站服务器上设了个子域指向那个远程 ...
没有在网站上设置,是又拍云提供的服务,就是直接把相应网址(比如我用的是p.jiulu.info)解析到又拍云上就行,显示的就是自己的网址(p.jiulu.info)但是实际上存储在又拍云(jiulu.b0.upaiyun.com)。

美国的服务器空间貌似比较便宜,最早我开始玩网站的时候用的是Godaddy的空间,用得起15G,有的网友使劲往网站的相册里传照片,我可以毫不介意,甚至喜欢他们带来的人气;后来换到了国内,备了案,发现已经用不起大空间了,只好控制会员自己的相册容量,为此流失了不少网友。又拍云提供的低价空间帮了我的大忙,再也不用既怕网友不用又怕网友过度用了
12下一页

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

小黑屋|Archiver|彼岸网  

Powered by Discuz! X3.1 © 2001-2014 Comsenz Inc.
GMT-4, 2017-2-20 06:22 PM , Processed in 0.063448 second(s), 21 queries.

返回顶部