请问joomla如何对访问单元设IP限制,如何导入文章 (4) 作者 Sam lee
joomla1.5做的企业网站星谷科技 (9) 作者 vensae
请教Hawkhost.com主机附加域的设置 (4) 作者 白建鹏
如何在组件中触发插件plugin (2) 作者 langhuayou
SOBI2 for J1.5 分类信息发布组件语言问题 (1) 作者 白建鹏
phoca gallery 的thumbnail 的重建功能为什么大小不一 (0) 作者 sun0632
【求助】网站迁移后,后台404错误,打不开,前台访&... (3) 作者 萧静毓
Joomla! 之门“年费”标准变更说明专帖 (14) 作者 ultramankiki
Abivia Redaction 插件滤除phoca gallery 版权,但是刷新一下页面又出来 (14) 作者 sun0632
请问有没有房屋中介可使用的搜索插件或者具有选择功能的相册? (0) 作者 yvettebaby
Joomla! 1.0.x 系列前台会员上传文件的解决方案 |
|
| 作者: 白建鹏 | |
| 2007-11-18 | |
|
假如要允许访客或者注册会员在网站前台提交/上传文件,例如 Word 文档、PDF [[电子书]]、视频片断、录音mp3…… 不是为了供下载,而是为了传递给管理员,就像是学生交作业,该怎样做? 这个问题很早以前就有人提出过——用户的需求总是正确的。可惜的是,一直没有一个满意的答案。在本站论坛,我曾经告诉提出同样问题的会员:可以借用下载组件如 DOCman 或者 Remository 的“上传”功能来解决。没错,这样可以解决“上传”的问题,但不是最佳答案。 如果我们需要给不同的上传者不同的权限,例如张三允许上传 Word 文档,李四只能上传 PDF 文件,而王麻子可能只允许上传 mp3 歌曲;或者,Tom 只能上传小于 100MB 的文件,Mike 就能上传不超过 10GB 的任何大文件…… 这样的需求,用下载组件是做不到的。 那么,这样的要求能做到吗?当然能!Joomla! 的开发人员再次证明了 [[Nothing is Impossible]] ! 凡事皆有可能!
上面这个屏幕截图就是我们今天要介绍的 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]] 以上版本播放器,否则无法看到上传窗口。 |
| < 上一篇 | 下一篇 > |
|---|