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

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

日志

Discuz插件开发:上传文件插件

热度 5已有 3025 次阅读2016-5-17 05:46 PM |个人分类:Discuz| 上传文件, 开发, 彼岸, 用户

Discuz插件开发:上传文件插件

彼岸网提供了让网友上传文件的功能,为我写日志提供了很大的方便,但使用下来也感到有一定不足,一是没法删除上传后的文件,二是网友们上传的文件都在一起不容易找到。所以我尝试自己写了个上传文件和管理文件的插件,和网友们分享。


在启用后,站长可以设置每个用户上传的文件总尺寸的限额,默认值是200MB, 和允许上传的文件扩展名, 默认值是 chm, pdf, zip, rar, tar, gz, bzip2, gif, jpg, jpeg, png, txt, doc, mp3, mp4,以及允许哪些用户组的用户使用本插件:

这个插件启用后可以按路径 plugin.php?id=txgz_file_uploader:files 来进入上传网页。这个路径可以放在站长认为合适的地方来让用户使用,比如在上图中在主导航栏的"帮助"下加了个子菜单项"上传文件"来进入这个网页。

用户可以上传的单个文件的最大尺寸受PHP环境中的三个设置值所控制:memory_limit, post_max_size, upload_max_filesize,不能超过其中任何一个(见 链接 中的讨论)。一般有必要加大post_max_size和upload_max_filesize的值。在自己机器上可以在 php.ini 里调整,在托管共用的服务器上要按服务商提供的方法设置。比如在 namecheap.com 里,在 Software and Services -> Select PHP Version -> Switch To PHP Settings里设置。


如果用户要上传的文件尺寸超过这些设置值的话,会得到类似下面的出错信息:


点击上传后的文件地址末的图标 会将文件地址拷贝到Clipboard里,再粘贴到需要的地方去。

这个插件包含了两个模块。一个'管理中心-列表链接'模块让管理员集中管理所有用户的上传文件。另一个仅供管理员使用的'页面嵌入'模块,它的作用是在网页上的内容管理菜单上添加一个'管理文件'菜单项,让管理员能进入管理中心直接管理当前显示的个人空间用户的文件。


管理员也可以进入管理中心里在应用里点击本插件下的'文件管理'链接来集中管理所有用户上传的文件:


插件下载: http://www.bian-wang.com/discuz/data/userupload/10005/txgz_file_uploader.zip (01/10/2017更新)
更新记录:
05/29/2016: 确保长链接能自动换行
05/30/2016: 1)添加插件设置让站长选择哪些用户组的用户可以使用本插件,2)修补漏洞:当上传文件名中含 & 时删除失败
06/01/2016: 支持同时上传多个文件
06/02/2016: 解决iPhone上传同名图片image.jpg问题
06/04/2016: 加了个管理中心模块"文件管理",供管理员管理用户上传的文件用
06/05/2016: 1)在文件列表页上添加分页显示(每五十个文件一页),2)在内容管理菜单上添加管理文件菜单项
06/06/2016: 1)遵循PRG模式, 2)设了插件网页标题,3)一些风格改进
06/07/2016: 1)解决昨天的修改后Mac机器上Safari里操作后文件列表不实时更新问题, 2)解决iPad上传同名图片image.jpeg问题
06/25/2016: 1)支持远程空间,2)上传文件夹位置由网站上传设置决定, 3)在上传文件夹里添加空白index.html以避免显示文件目录
06/26/2016: 1)在列表里显示上传时间,2)点击表列标题来按列排序,3)缩短了显示列表所用时间
11/10/2016: 将文件名排序从区分大小写改成不区分大小写
01/10/2017: 不同的FTP服务端软件提供文件修改时刻的做法有所不同,修改代码来兼容这个差异


发表评论 评论 (208 个评论)

回复 carry0987 2016-11-10 09:05 PM
天香公主:    不需要我同意吧
你是作者嘛,當然要啊
回复 sesemule 2016-11-10 09:04 PM
天香公主: 在文件func.php中的函数getuploads里将下面这句
    $orderByFunc = 'sortByName';
改成
    $orderByFunc = 'sortByDateline';
    if ($orderby == 'name') $o ...
感谢。
回复 天香公主 2016-11-10 08:48 PM
sesemule: 天香,请问如何设置默认排序为上传时间?因为上传文件后会习惯于认为列表里的第一个文件是刚刚上传的,而现在的默认排序是名称,似乎不太符合习惯。 ...
在文件func.php中的函数getuploads里将下面这句
    $orderByFunc = 'sortByName';
改成
    $orderByFunc = 'sortByDateline';
    if ($orderby == 'name') $orderByFunc = 'sortByName';
回复 天香公主 2016-11-10 08:45 PM
carry0987: 在代碼那邊修改即可,不過要天香同意
   不需要我同意吧
回复 carry0987 2016-11-10 10:52 AM
sesemule: 天香,请问如何设置默认排序为上传时间?因为上传文件后会习惯于认为列表里的第一个文件是刚刚上传的,而现在的默认排序是名称,似乎不太符合习惯。 ...
在代碼那邊修改即可,不過要天香同意
回复 sesemule 2016-11-10 08:41 AM
天香,请问如何设置默认排序为上传时间?因为上传文件后会习惯于认为列表里的第一个文件是刚刚上传的,而现在的默认排序是名称,似乎不太符合习惯。
回复 carry0987 2016-10-23 02:46 AM
http://www.fucknehs.com/icnc/upload/
回复 carry0987 2016-9-11 12:00 PM
天香公主: 回来了
那,我提供的那個開源的文件上傳介面如何?功能較多,不過相對比較複雜
回复 天香公主 2016-9-10 11:00 AM
carry0987: 度假回來了嗎?~
回来了
回复 carry0987 2016-9-10 05:32 AM
度假回來了嗎?~
回复 carry0987 2016-8-23 04:04 AM
天香,目前找到了一個免費開源的文件上船的網頁。使用JQ的,你看看吧~(支援多選刪除,進度條...等)
http://www.fucknehs.com/icnc/upload/

原始文件:
https://qbnehs.besv.net/test/userupload/1/file%20upload.zip
回复 carry0987 2016-6-30 10:37 PM
天香公主: 没加对文件名的限制,因为我觉得有上传中文名的文件如歌曲名为文件名的需要,而且至今没发现问题。如果你发现有因文件名的问题无法上传或上传后无法接触的实例, ...
沒問題,空格文件
回复 carry0987 2016-6-27 07:11 PM
天香公主: 如果你说的是带空格的文件名,那这次的改动里有对此的支持,你试试?
好,今晚試試
回复 东风 2016-6-27 12:42 AM
天香公主: 改好了,你重新安装下吧
       
回复 sesemule 2016-6-26 10:00 PM
又更新了?真棒!
回复 天香公主 2016-6-26 08:20 PM
东风: 谢谢天香,我在服务器上找到了php.ini, 做了相应修改, 对于utf8站点,文件上传就是最好都用英文和数字为名字
没加对文件名的限制,因为我觉得有上传中文名的文件如歌曲名为文件名的需要,而且至今没发现问题。如果你发现有因文件名的问题无法上传或上传后无法接触的实例,我再看看。
回复 天香公主 2016-6-26 08:14 PM
carry0987: 喔喔......我想說之前可以正常上傳有空格的檔案..
如果你说的是带空格的文件名,那这次的改动里有对此的支持,你试试?
回复 carry0987 2016-6-26 08:11 PM
天香公主: 你说得对,不过要求上传文件路经不含空格不算苛刻吧,而且ftp_nlist也有同样问题。

我刚更新了插件,加入了点击表列标题来按列排序的功能。 ...
喔喔......我想說之前可以正常上傳有空格的檔案..
回复 天香公主 2016-6-26 05:51 PM
carry0987: 新的小問題:ftp_rawlist不支援有空格的檔名,如果出現空格,將被無視。
詳情見:http://php.net/manual/en/function.ftp-rawlist.php ...
你说得对,不过要求上传文件路经不含空格不算苛刻吧,而且ftp_nlist也有同样问题。

我刚更新了插件,加入了点击表列标题来按列排序的功能。
回复 carry0987 2016-6-26 02:18 PM
新的小問題:ftp_rawlist不支援有空格的檔名,如果出現空格,將被無視。
詳情見:http://php.net/manual/en/function.ftp-rawlist.php

facelist doodle 涂鸦板

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

小黑屋|Archiver|彼岸网  

Powered by Discuz! X3.1 © 2001-2014 Comsenz Inc.
GMT-4, 2017-2-24 02:27 AM , Processed in 0.069455 second(s), 19 queries.

返回顶部