phpwind4.3.2上传txt文本可自动切割并自动回复到多楼层的插件

插件使用背景
小说网站phpwind论坛,一个txt文件里就是一本小说,有近10万行文本,如果手工发布, 是不现实的. 所以.上传后.需要自动读取标题,自动按行切割为一个个小文件并按日期保存,前台读取时,每个楼层直接从各自对应的txt中读取,相当于内容静态化,可减轻数据库压力.
因为文件txt切割后,会很多.所以,应该以/年/月/日的结构存放.否则,一个目录中可能存在上100万个文件.会卡死

postupload_txt.php 文件请去这里下载
http://download.csdn.net/download/viqecel/10270545

一,修改require/postnew.php 文件,发帖子测试时,先用10几行的小文件,进行测试


找到下面两句,


list($atc_title,$atc_content)=check_data($action);
require_once(R_P.'require/postupload.php');


整体替换为下面的大段,注意看里面的文字说明,并自己做出修改


    //--------------------------------------------------------------        
//切割参数设置
$diplay_txt=1;//1表示开启大txt切割功能.并插入回复楼层中.0表示正常上传到主帖子,并只提供下载
$del_old_txt=1; //1表示删除原始大文件.0表示保留
$default_read_title=1;//0表示主帖内容手工填写 1表示不填主帖标题时,自动读txt的第一行为标题,要保证txt原文件第一行有内容,
$default_write_content='请分楼层阅读';//在前台发帖子,内容不想填写时,系统会自动填这里定义的默认内容.
//如果这样设置,$default_write_content=''; 即表示无默认内容,则发帖子时,需要手工填
$reply_need_lines=5;//每个新生成的小的txt文件包含多少行文字,注意空行也算作一行.设置过大加载时可能会卡死,注意合理设置.估计设置为800行差不多.


//下面的不需要修改.
if($diplay_txt==1&&$_FILES['atc_attachment1']['name']){
    require_once(R_P.'require/postupload_txt.php');
    }else{
    list($atc_title,$atc_content)=check_data($action);
require_once(R_P.'require/postupload.php');
    }
    //--------------------------------------------------------------




二,  把发你的 require/postupload_txt.php 文件放在你的require目录中

三, 自动回复的楼层.默认内容为帖子为 auto_diplay_txt ,他作为标志符,不可以修改,当系统判断是 auto_diplay_txt 时,会自动显示txt小文件,而不是显示下载附件

四,修改根目录的 read.php (其实就是在后面增加了 ,$a_url)

在约362行


$read['downattach'][$at['aid']]=array($at['aid'],$at['name'],$at['size'],$at['hits'],$at['needrvrc'],$at['type'],$dfadmin,$at['desc']);


替换为


$read['downattach'][$at['aid']]=array($at['aid'],$at['name'],$at['size'],$at['hits'],$at['needrvrc'],$at['type'],$dfadmin,$at['desc'],$a_url);



五,模板修改 read.htm


把下面一大段,整体 替换






print <<<EOT
-->
<br><span class='tpc_content' $a_id>$read[content]</span><br>
<!--
EOT;
if($read['downattach']){
foreach($read['downattach'] as $attach){
if($attach){print <<<EOT
-->
<br><br>
<!--
EOT;
if($attach[7]){print <<<EOT
-->
描述:$attach[7]<br>
<!--
EOT;
}print <<<EOT
-->
附件: <img src='$imgpath/$stylepath/file/$attach[5].gif' align=absbottom>  
<a href='job.php?action=download&pid=$read[pid]&tid=$tid&aid=$attach[0]' target='_blank'>
<font color=red>$attach[1]</font></a> ($attach[2] K) 下载次数:$attach[3] 
<!--
EOT;
if($attach[4]){print <<<EOT
-->
需要{$db_rvrcname}:$attach[4]
<!--
EOT;
}if($attach[6]){print <<<EOT
-->
[<a href='job.php?action=deldownfile&pid=$read[pid]&tid=$tid&aid=$attach[0]'>删除</a>]
<!--
EOT;
}}}}




整体替换为









if($read[content]=='auto_diplay_text'){
foreach($read['downattach'] as $attach){
$ccc=file_get_contents($attach[8]);
print <<<EOT
-->
<br><span class="tpc_content">$ccc</span><br>
<!--
EOT;
}
}else{
print <<<EOT
-->
<br><span class='tpc_content' $a_id>$read[content]</span><br>
<!--
EOT;
if($read['downattach']){
foreach($read['downattach'] as $attach){
if($attach){

print <<<EOT
-->
<br><br>
<!--
EOT;
if($attach[7]){print <<<EOT
-->
描述:$attach[7]<br>
<!--
EOT;
}print <<<EOT
-->
附件: <img src='$imgpath/$stylepath/file/$attach[5].gif' align=absbottom>  
<a href='job.php?action=download&pid=$read[pid]&tid=$tid&aid=$attach[0]' target='_blank'>
<font color=red>$attach[1]</font></a> ($attach[2] K) 下载次数:$attach[3] 
<!--
EOT;
if($attach[4]){print <<<EOT
-->
需要{$db_rvrcname}:$attach[4]
<!--
EOT;
}if($attach[6]){print <<<EOT
-->
[<a href='job.php?action=deldownfile&pid=$read[pid]&tid=$tid&aid=$attach[0]'>删除</a>]
<!--
EOT;
}}}}
}










请打赏谢谢大佬

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
其中 data\bbscache文件 ftpserver.php 放在程序对应的文件里面 修改文件列表:(PHP文件6个,HTML文件1个) job.php,read.php,show.php,setforum.php,postupload.php,template.php,setforum.htm 1. 数据库升级 进入phpMyAdmin -> SQL 下运行下面升级 ALTER TABLE `pw_forums` ADD `remoteftp` INT( 3 ) UNSIGNED DEFAULT '0' NOT NULL ; ALTER TABLE `pw_attachs` ADD `remoteftp` INT( 3 ) UNSIGNED DEFAULT '0' NOT NULL ; 2. job.php ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ ◆找到require_once('global.php'); ◆下面加入 //远程ftp修改by axing include_once(D_P.'data/bbscache/ftpserver.php'); //远程ftp修改by axing ◆找到 if(!$attach_url && !is_readable("$attachdir/$attachurl")){ Showmsg('job_attach_error'); } ◆替换成 //远程ftp if(!$attach_url && !is_readable("$attachdir/$attachurl") && !$remoteftp){ Showmsg('job_attach_error'); } //远程ftp ◆找到 if($attach_url && !file_exists("$attachdir/$attachurl") && function_exists('file_get_contents')){ $downcontent=file_get_contents($attach_url."/$attachurl"); ◆替换成 if(($attach_url && !file_exists("$attachdir/$attachurl") && function_exists('file_get_contents'))||$remoteftp){ //远程ftp by axing if($remoteftp) { $downcontent=file_get_contents($ftplist[$remoteftp][url]."/$attachurl"); }else{ $downcontent=file_get_contents($attach_url."/$attachurl"); } //远程ftp by axing ◆找到 P_unlink("$attachdir/$attachurl"); ◆替换成 //远程ftp by axing if($remoteftp) { del_ftp_attach($remoteftp,$attachurl); }else { P_unlink("$attachdir/$attachurl"); } //远程ftp by axing 3. read.php ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ ◆找到 require_once(R_P.'require/bbscode.php'); ◆下面加入 //远程ftp修改by axing include_once(D_P.'data/bbscache/ftpserver.php'); //远程ftp修改by axing ◆找到 if ($groupid != 3 && !$foruminfo['allowvisit'] && (!$foruminfo['forumadmin'] || strpos($foruminfo['forumadmin'],','.$windid.',')===false)){ ◆替换成 if ($windid != $manager && $groupid != 3 && !$foruminfo['allowvisit'] && (!$foruminfo['forumadmin'] || strpos($foruminfo['forumadmin'],','.$windid.',')===false)){ ◆找到 $db_signwindcode,$fid,$tid,$pid, ◆后面加入 $remoteftp,$ftplist, ◆找到 $a_url=$attachpath.'/'.$at['attachurl']; ◆下面加入 //远程ftp修改 by axing } elseif($at['remoteftp']){ $a_url=$ftplist[$at['remoteftp']][url].'/'.$at['attachurl'];//远程的图片地址 //远程ftp修改 by axing 4. show.php ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ ◆找到 include_once(D_P.'data/bbscache/forum_cache.php'); ◆下面加入 //远程ftp include_once(D_P.'data/bbscache/ftpserver.php'); //远程ftp ◆找到 a.descrip, ◆后面加入(有两处都要记得改) a.remoteftp, ◆找到 } else{ continue; } ◆上面加入 //远程ftp } elseif($rt['remoteftp']){ $rt['a_url']=$ftplist[$rt['remoteftp']][url].'/'.$rt['attachurl']; //远程ftp ◆找到 } }else{ Showmsg('pic_not_exists'); ◆上面加入 //远程ftp } elseif($rt['remoteftp']){ $rt['a_url']=$ftplist[$rt['remoteftp']][url].'/'.$rt['attachurl']; //远程ftp 5. admin/setforum.php ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ ◆找到 include_once(D_P.'data/bbscache/forumcache.php'); ◆下面加入 //远程ftp修改 by axing include_once("./data/bbscache/ftpserver.php");//引入FTP服务器列表 //远程ftp修改 by axing ◆找到 $viewdownload =str_replace("_{$value}_",'checked',$viewdownload); ◆下面加入 //远程ftp修改 $ftpselected[$remoteftp]='selected'; $ftpselect="<option value=0>本地空间</option>"; foreach($ftplist as $ftpinfo){ $ftpid=$ftpinfo[id]; $ftpselect.="<option value=$ftpinfo[id] $ftpselected[$ftpid]>$ftpinfo[name]</option>"; } //远程ftp修改by axing ◆找到 ifhide='".(int)$ifhide."' ◆后面插入 ,remoteftp='$remoteftp' 6. require/postupload.php ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ ◆找到 !function_exists('readover') && exit('Forbidden'); ◆下面加入 //远程ftp上传修改 by axing include_once(D_P.'data/bbscache/ftpserver.php'); //远程ftp上传修改 by axing ◆找到 $fileuplodeurl= $savedir.'/'.$fileuplodeurl; } ◆替换成 } //远程ftp修改 by axing if($foruminfo['remoteftp']){ $remoteftpid=$foruminfo['remoteftp']; $result = ftpconnect($ftplist[$remoteftpid]); ftp_cdup($result); if($db_attachdir){ if(!@ftp_chdir($result,$savedir)){ ftp_mkdir($result,$savedir); ftp_chdir($result,$savedir); } $attach_fname0=$fileuplodeurl; $fileuplodeurl= $savedir.'/'.$fileuplodeurl; }else{ $attach_fname0=$fileuplodeurl; } //$db->query("INSERT INTO pw_ftperror (attachment, ftpdate, ftpid) VALUES ('$fileuplodeurl', '$timestamp','$foruminfo[remoteftp]')"); //$attid = $db->insert_id(); if(@ftp_put($result, $attach_fname0, $atc_attachment, FTP_BINARY)){ //上传文件 $size=ceil(ftp_size($result,$attach_fname0)/1024); ftp_close($result); // $db->query("delete from pw_ftperror where aid = $attid"); }else{ showmsg('附件远程上传失败!');//远程上传失败 } }else{ //远程ftp修改 by axing $fileuplodeurl= $savedir.'/'.$fileuplodeurl; ◆找到 Showmsg('upload_content_error'); } ◆下面加入 //远程 ftp $size=ceil(filesize("$attachdir/$fileuplodeurl")/1024); } //远程 ftp ◆找到 $size=ceil(filesize("$attachdir/$fileuplodeurl")/1024); $atc_attachment_name=addslashes($atc_attachment_name); $db->update("INSERT INTO pw_attachs SET fid='$fid',uid='$winduid',hits=0,name='$atc_attachment_name',type='$type',size='$size',attachurl='$fileuplodeurl',needrvrc='$needrvrc',uploadtime='$timestamp',descrip='$descrip'"); ◆替换成 $atc_attachment_name=addslashes($atc_attachment_name); //远程ftp $db->update("INSERT INTO pw_attachs SET fid='$fid',uid='$winduid',hits=0,name='$atc_attachment_name',type='$type',size='$size',attachurl='$fileuplodeurl',needrvrc='$needrvrc',uploadtime='$timestamp',descrip='$descrip',remoteftp='$foruminfo[remoteftp]'"); //远程ftp ◆找到 'desc' => str_replace('\\','',$descrip) ◆下面加入 'remoteftp' => $foruminfo[remoteftp] 6.2 如果需要用到txt附件上传时,自动切割并依次上传功能,上面第6步不用修改,直接上传压缩包中的postupload_txt.php 到require/目录即可. 并结合这个插件进行使用.https://blog.csdn.net/viqecel/article/details/79440688 7. require/template.php ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ ◆找到 include_once(D_P."data/bbscache/forumcache.php"); ◆下面加入 //远程ftp include_once(D_P.'data/bbscache/ftpserver.php'); //远程ftp ◆找到 $a_url="$db_bbsurl/$attachpath/$at[attachurl]"; ◆下面加入 //远程ftp }elseif($at['remoteftp']){ $a_url=$ftplist[$at['remoteftp']][url].'/'.$at['attachurl']; //远程ftp 8. template/admin/setforum.htm ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ ◆找到 <tr class=b> <td><input type="checkbox" name="otherforum[logo]" value="1"></td> <td>版块图标</td> <td><input type="text" size="30" name="logo" value="$logo"></td> </tr> ◆下面加入 <tr class=b> <td><input type="checkbox" name="otherforum[remoteftp]" value="1"></td> <td>是否开启远程附件上传</td> <td><select name="remoteftp">$ftpselect</select></td> </tr> (完成...)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值