Discuz!X提示“抱歉,该附件无法读取”的解决方法

新客网 XKER.COM 时间:2014-06-27 20:53:48来源:jingguanedu  评论:

  论坛从X3升级到X3.1的时候,出现了大部分附件“抱歉,附件无法读取”的错误,感觉到很纠结。明明是按照官方的教程进行升级的。后来到discuz官方查询求助,但是仅有几个人回复,反馈bug也没有回应。感觉discuz论坛活跃大不如前了。

后来看到了其他人写的一些解决方法,摘录在下面。

-------------------------------------------------------------------------------------------

有些同学升级或者搬家会导致出现“抱歉,该附件无法读取”,遇到这个问题后又该如何解决呢?今天我的红友网也同样遇到这个问题,就简单分析说明下,并提供下载附件出现“抱歉,该附件无法读取”解决方案。

一般出现“抱歉,该附件无法读取”情况:

1、升级论坛后,没有把附件移动到对应的目录下;

2、论坛搬家后,附件没有完整搬迁过来,导致附件丢失;

3、附件路径设置错误导致

4、附件目录权限设置不正确

下载附件出现“抱歉,该附件无法读取”解决方案:

1、检查下data附件目录权限是否为777可读写,data下相应目录也根据安装教程设置对应目前权限;

2、后台--全局--上传设置--基本设置--本地附件保存位置是否正确;

Discuz!X提示“抱歉,该附件无法读取”的解决方法_新客网

登录/注册后可看大图

3、后台--全局--上传设置--远程附件--启用远程附件:没有开启选择“否”;

4、检查帖子对应的目录下的附件是否存在(可以看帖子的发布时间,然后查看对应日期下目录下的附件),如果不存在使用备份上传恢复

原帖地址:http://bbs.zb7.com/thread-755-1-1.html

------------------------------------------------------------------------------------------------------------------------------------------------

但是检查了一遍并没有解决,看了一下ftp空间的附件文件是否在。

目录在:/data/attachment/forum

附件文件是按照日期放置的。我看到附件文件(.attach.zip等)都是还在的。这就放心了。

后来又去看了数据表,发现

pre_forum_attachment

pre_forum_attachment_0

pre_forum_attachment_1

.......

pre_forum_attachment_9

等数据表都还在。

在另一个老帖子的启发下具体看了一下pre_forum_attachment。

pre_forum_attachment记录了全部附件的编号,包括aid(附件ID),tid(帖子ID),uid(用户ID),tableid(这个就是表示具体附件信息保存在哪个表中),downloads(下载次数)。

用户点击下载链接,得到的是一个附件ID,也就是aid,根据aid在pre_forum_attachment表中查询对应的tableid,然后根据tableid在对应的表的再查询到附件的具体信息和内容。

比如下载一个aid为100的附件,先到pre_forum_attachment查询,查到tableid为2,那么到pre_forum_attachment_2查附件的具体信息。

但是我在pre_forum_attachment看到所有的附件的tableid都是0或者1,所以造成了大部分附件在要下载的时候都去pre_forum_attachment_0

pre_forum_attachment_1去查,当然是大部分都查询不到了。

解决方法也非常简单,就是执行一遍下面的sql语句:

  1. update pre_forum_attachment a, pre_forum_attachment_0 b set a.tableid = 0 where a.aid = b.aid;  
  2. update pre_forum_attachment a, pre_forum_attachment_1 b set a.tableid = 1 where a.aid = b.aid;  
  3. update pre_forum_attachment a, pre_forum_attachment_2 b set a.tableid = 2 where a.aid = b.aid;  
  4. update pre_forum_attachment a, pre_forum_attachment_3 b set a.tableid = 3 where a.aid = b.aid;  
  5. update pre_forum_attachment a, pre_forum_attachment_4 b set a.tableid = 4 where a.aid = b.aid;  
  6. update pre_forum_attachment a, pre_forum_attachment_5 b set a.tableid = 5 where a.aid = b.aid;  
  7. update pre_forum_attachment a, pre_forum_attachment_6 b set a.tableid = 6 where a.aid = b.aid;  
  8. update pre_forum_attachment a, pre_forum_attachment_7 b set a.tableid = 7 where a.aid = b.aid;  
  9. update pre_forum_attachment a, pre_forum_attachment_8 b set a.tableid = 8 where a.aid = b.aid;  
  10. update pre_forum_attachment a, pre_forum_attachment_8 b set a.tableid = 9 where a.aid = b.aid; 

语句就是如果pre_forum_attachmenta的aid出现在了pre_forum_attachment_0中,那么tableid则改为0.....依次修改即可。

本文来源:jingguanedu原文链接

如果您喜欢本文请分享给您的好友,谢谢!如想浏览更多更好的建站程序内容,请登录:http://www.xker.com/edu/website/6/index.html

相关内容标签:建站程序 Discuz!X
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)