返回列表 发帖
查看: 522|回复: 3

Discuz! X3.5 不用插件实现上传下载附件大于4G

1

主题

0

回帖

6

积分

初学乍练

贡献
0 点
金币
5 个
发表于 2024-9-8 09:38:59 | 显示全部楼层 |阅读模式
因最近内网服务器之间下载各种升级包需要搭建一个网站或者文件服务器,上传要能审核,下载能够查看记录,同事开始建议使用SVN、Gitlab等开源仓库,最后决定用Discuz! X3.5 搭建一个下载论坛,可以方便的隐藏不需要的菜单、或者其他模块,发帖上传审核、下载记录使用插件实现。
配置都已修改正常:
1)用户组、管理组中附件相关都已设成0,即不限制大小。(后面我改成了20971520,即小于20480M)

2)httpd.conf中已增加(表示允许请求20G):LimitRequestBody  21474836480
3)php.ini(独立内网,时间都设为了0):
upload_max_filesize = 20480M
memory_limit = 20480M
post_max_size = 20480M

max_input_time = 0
max_execution_time = 0
但是在上传下载大附件时遇到了问题:


1、不能上传大于4G的附件,即使设成0也一样,是因为相关数据库表中maxattachsize、filesize是int类型,无符号int最大在4G的样子,我用的navicat【右键--》设计表】,修改以下表,并保存:


1)usergroups_field->maxattachsizemaxsizeperday bigint,长度20。长度只是显示位数,不影响最大值!
2)attachment相关表中的filesizemaxsize bigint(20位)
3)forum_attachtype->maxsize bigint(20位)
4)member_count->attachsizetodayattachsize bigint(20位)
5)forum_polloption_image->filesize   【图片】bigint(20位)
修改后重启apache,进行上传大于4G附件,可以看到 2.jpg
看起来好像正常了,但是点击下载下来只有610M(在win10笔记本上测试的),去附件文件夹里看也确实只有610M,网上找了找没有找到解决办法,本来打算放弃采用别的办法来实现,突然想到我测试过其他版本,一直用的是php7.2,改回X3.5后没有改回php8.0,配置好php8.0后,测试4.25G、7G,一直到16G上传都正常
去附件文件夹里看,文件大小也正常了! 附件大于4G.jpg

但是下载却遇到了麻烦,win10机器上下载超过3G大小后,就会看到下载速度变成0,然后又会尝试下载几次,最终还是会失败。win7更惨,超过1G就是失败。网上找了下资料,说是应该内存不够,使用php下载会将数据缓冲到内存,只有另谋出路了,解决办法就是用apache的mod_xsendfile模块下载,不走php层,我用的apache24,模块下载地址:https://github.com/nmaier/mod_xsendfile
1)、将mod_xsendfile.so放置到apache安装目录下的modules文件夹
2)、配置Apache 配置文件
将以下内容添加到httpd.conf中
# 加载 x-sendfile 模块
LoadModulexsendfile_modulemodules/mod_xsendfile.so

XSendFile on
3)编辑source\module\forum\forum_attachment.php,找到下面这行(317行),然后紧接着在下面添加两行内容,
function getlocalfile($filename, $readmod =2, $range_start = 0, $range_end = 0) {
              header('X-Sendfile:'.$filename);
              exit();
/*     if($readmod == 1 || $readmod == 3 ||$readmod == 4) {
              if($fp = @fopen($filename, 'rb')){
……………………这些都要注释掉………………………………
       @flush(); @ob_flush();*/
}  注意最后这个} 要保留
进行下载测试,不用缓冲,直接就弹出文件保存框,win7上上传、下载测试7G,16G均正常!已经可以满足上传下载各种大包的需求,更大的就没在测试了。希望对有需要的朋友有帮助!


回复

使用道具 举报

11

主题

52

回帖

87

积分

渐入佳境

贡献
2 点
金币
5 个
发表于 2024-9-9 21:46:49 来自手机 | 显示全部楼层
牛,虽然看不懂。但是感觉很厉害👍🏻
回复 支持 反对

使用道具 举报

7

主题

123

回帖

176

积分

渐入佳境

贡献
3 点
金币
7 个
发表于 2024-9-29 12:48:40 来自手机 | 显示全部楼层
https://addon.dismall.com/plugins/pn_ftp_c2s.html
这个方案更好,不用把上传内存设置加大,更省资源,支持无限大文件
回复 支持 反对

使用道具 举报

7

主题

123

回帖

176

积分

渐入佳境

贡献
3 点
金币
7 个
发表于 2024-9-29 13:03:38 来自手机 | 显示全部楼层
也无需改代码支持无限大文件下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2024-10-12 15:32 , Processed in 0.042591 second(s), 9 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2024 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表