登录 注册

登录

假如要允许访客或者注册会员在网站前台提交/上传文件,例如 Word 文档、PDF 电子书、视频片断、录音mp3…… 不是为了供下载,而是为了传递给管理员,就像是学生交作业,该怎样做?

这个问题很早以前就有人提出过——用户的需求总是正确的。可惜的是,一直没有一个满意的答案。在本站论坛,我曾经告诉提出同样问题的会员:可以借用下载组件如 DOCman 或者 Remository 的“上传”功能来解决。没错,这样可以解决“上传”的问题,但不是最佳答案。

 

如果我们需要给不同的上传者不同的权限,例如张三允许上传 Word 文档,李四只能上传 PDF 文件,而王麻子可能只允许上传 mp3 歌曲;或者,Tom 只能上传小于 100MB 的文件,Mike 就能上传不超过 10GB 的任何大文件…… 这样的需求,用下载组件是做不到的。

 

那么,这样的要求能做到吗?当然能!Joomla! 的开发人员再次证明了 Nothing is Impossible ! 凡事皆有可能!

Joomla! Flash Uploader
Joomla! Flash Uploader

 

上面这个屏幕截图就是我们今天要介绍的 Joomla! Flash Uploader 组件,简称 JFU。

JFU 的功能用一句话概括,那就是允许向网站服务器端上传文件。即便是看它的名字也能明白这一点。上面的截图更是清楚的显示了它简单易用的操作界面。即使你从来没有用过它,那么看看上面的图,也能想象出上传的步骤:从左侧选择目标文件夹,点击“增加文件”按钮,通过“浏览”对话框选择个人电脑上的文件,最后点击“上传文件”按钮,就将文件传送到了远端目录中。

很早以前,Joomla! 就拥有了另一个很棒的后台文件管理组件叫做 JoomlaXplorer,同样能做到在后台上传文件,并且可以一次上传多个文件。与之相比,JFU 有何优势?

JFU 同样能在后台帮助管理员上传、删除文件,同样可以做到一次上传多个文件—— 点击“增加文件”之后,可以选择多个文件,构成“上传队列”,最后点击“上传文件”一次完成。

但是,我们今天说的是 JFU 的强项,JoomlaXplorer 所不能做到的:在前台上传文件。

我们已经知道,JoomlaXplorer 只是一个后台组件,不能在前台使用。而 JFU 则不同,你完全可以建立一个菜单项目指向该组件,从而使得前台的访客也有上传文件的途径。

当然了,如果谁都能在前台通过 JFU 来上传文件,那岂不是乱套了!恐怕用不了多久,你的服务器上就堆满了好事者上传的各种垃圾 —— 服务器的带宽也吃不消啊。

限制上传的方法最简单的就是:将指向 JFU 的菜单项目访问权限设为“Registered”,这样一来,未注册访客就无法看到这个菜单了,只有注册会员才能访问。

那么,假如你有几千个会员呢?(这并不罕见,Joomla! 之门 网站刚建站一年就有5000个会员了)要知道,Joomla! 的菜单访问权限再提高一档就是 Special,那么只有管理员才能看到了。这个方法显然不妥,因为你的网站可能正是需要某些会员来上传资料。

OK,我们来看 JFU 自己怎么解决第一个问题:

谁可以上传文件?

Joomla! 对于用户权限控制比较糟糕,不过 JFU 早有准备:作为管理员,你可以在后台指定可以拥有上传权限的会员。JFU 有多牛呢?它可以具体到每一个会员!

首先,JFU 允许你设定一个参数(Profile),你可以给这个参数起一个名字,保存下来(保存时自动获得一个 ID);然后在 JFU 的“会员”设置页面,将某个参数与某个会员,或者某几个会员,建立一个“映射”(mapping)关系,也就相当于互相“关联”。

参数之中设置了有关文件上传的各种权限,而当某个参数与会员身份建立捆绑式“关联”之后,这些会员就拥有了参数中的权限。

当你为 JFU 建立前台菜单的时候,有一个参数就是要你填写 Profile ID,这样一来,该菜单就调用指定 Profile 的规定。如果前台点击该菜单的会员不是与该 Profile 建立映射关系的会员,则他根本看不到上传文件的窗口,而是一段介绍文字而已。

那么,Profile 里面都设定了哪些权限?这就是:

上传到哪里?上传什么?上传多少?

所有的管理员都不希望把后台的文件结构亮出来给人看。所以,JFU 允许你在 Profile 之中设定上传文件的目标文件夹。你可以专门建立一个 Uploads 目录,这样的话,会员在前台就只能看到该目录,而看不到其他任何目录。

限制上传文件的类型当然是必不可少的功能。你可以自己输入允许的文件类型,例如 .doc,.pdf,.mp3,.zip,.rar 等等。如果你不想限制,那么简单输入 all 这个英文单词即可。

JFU 是一个免费软件,准确地说,我们能免费使用它的免费版本,而该作者还有一个收费版本等着我们去购买。这两者最大的区别就是:免费版本每个文件不能超过 3MB 大小,而收费版本则没有限制。如果你的会员经常上传大于 3MB 的文件,我想你要么去购买收费版本,要么就让他们把文件切割了上传(分卷压缩),你收到之后再融合。

提醒一下:收费版本不限制文件大小并不意味着你可以上传任意大小的文件,这还与你的服务器上 php.ini 文件的设定中关于上传文件大小的限制有关。大多数服务器允许 HTTP 方式上传的文件都不能超过 32 MB。假如你需要经常上传更大文件,我建议你开通 FTP 服务吧。

除了控制文件类型和文件大小,你还可以设定是否允许对上传之后的文件进行改名或者删除操作,以及对文件夹的操作,如:是否允许上传者创建、删除或者该名文件夹。

如果上传的文件是图片,JFU 还能在上传的同时对图像做出尺寸调整。例如:你在后台限定上传的图像尺寸不能大于 1000像素,那么如果会员在前台试图上传 1024*768像素的图片时,就无法成功;但是同时该会员可以在“尺寸调整”下拉选单上选择所允许的数值,然后上传同一张图片,则该图片就被自动缩小到允许的尺寸范围之内并上传。

JFU 的群组功能怎么用?

如果说管理员设定了很多个不同的 Profile,每一个会员所允许的上传目录、文件大小、文件类型都不同,当会员在前台登录后上传时,我们希望 JFU 会自动根据该会员的身份调用后台对应的 Profile 来应用对应的权限。

但是,前面说了,为 JFU 创建菜单项目时只能指定一个 Profile ID。要解决这样的需求,就必须使用群组(group)功能了。

JFU 里面的群组可不是指用户群组,它与会员身份无关。此群组意思是指若干个 Profile 的集合。

举例说明:我们有3个注册会员,我希望A会员上传文件到 fa 目录;B会员上传到 fb 目录;C 会员上传到 fc 目录。同时,A 限定只能上传 mp3 歌曲文件,B限定只能上传 .doc 和 .txt 文件,C 则可以上传所有类型的文件。

在后台的“设置”页面,我们很容易就能分别针对这3个会员设定出3个 Profile,分别命名为 Pa,Pb 和 Pc。

现在,我们分别打开这3个Profile页面,将“群组 id”这一项都填写为88(数字随意选择),分别保存,这样,3个 Profile 就拥有了同一个群组 ID。

最后,我们在创建新菜单项目时,选择“New -> Component”类型,然后选中Joomla Flash Uploader,这时不要点击“保存”按钮,而是点击“应用”按钮,就会看到右侧出现两个参数:在“页面标题上显示”这里选择“群组 id”,然后在第二项“设定参数 Id”这里填写88,即刚才我们设定的群组 ID 号码。

这样一来,这个新建的菜单项目就包含了3种 Profile。当A、B、C 三人从前台登录后,个人点击此菜单后看到的上传界面是不同的,因为 JFU 已经自动根据他们的身份调用了对应的设定参数,从而分别显示不同的上传目录。

将上传窗口嵌入到文章中

JFU 还有一个配套的触发器。通过该触发器就可以将 JFU 的上传窗口插入到文章内容中。如果你能配合 MosIf  来设定看到这段内容的条件,那简直就可以做出一个“秘密通道”来 —— 除了你允许的人之外,其他会员根本找不到上传的入口!

此触发器的语法是:

{ joomla_flash_uploader type=<0 or 1> id=<profile or group id>}

注意:为了防止代码被执行,我在左侧的大括号后面多加了一个空格,正式使用时不能有空格,否则代码无法执行。

解释一下:type 表示套用Profile ID 还是群组 ID,0 表示 Profile,1 表示群组。后面的 id= 就表示填写对应的 ID 值。

我们上面的例子就可以写为:

{ joomla_flash_uploader type=1 id=88}

 

最后,提醒一下:由于 JFU 的界面是 Flash 做成的,因此要求客户端必须安装了 Flash 8 以上版本播放器,否则无法看到上传窗口。

{quickdown:800}

  1. 评论 (0)

  2. Add Yours

评论 (0)

这里还没有人发表评论

免费下载最新Joomla!核心中文版

扫描此二维码,立即开始下载 Joomla 3 核心中文版

付费下载汉化版扩展

付费后即可下载独家海量

Joomla! CMS 扩展汉化版

了解付费会员制度

点击这里给我发消息

了解 joomlagate.com 网站的付费会员制度