Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

图片附件设置失败排查指导

[复制链接]
elevensky 发表于 2011-5-31 12:22:51 | 显示全部楼层 |阅读模式
本帖最后由 elevensky 于 2011-5-31 12:25 编辑

X2增加了图片列表方式后,经常遇到设置附件失败的情况。

用附件firebug的网络项看看了看设置的过程,分析一下。希望有助于排查失败原因。
访问地址:

点击设置封面后,访问地址为:
http://127.0.0.1/x2sc/forum.php?mod=ajax&action=setthreadcover&aid=5&fid=2&infloat=yes&handlekey=setcover5&inajax=1&ajaxtarget=fwin_content_setcover5
根据此地址,找到处理页面:
./source/module/forum/forum_ajax.php中的
} elseif($_G['gp_action'] == 'setthreadcover') {
        $aid = intval($_G['gp_aid']);
        require_once libfile('function/post');
        if($_G['forum'] && $aid) {
                $threadimage = DB::fetch_first("SELECT tid, pid, attachment, remote FROM ".DB::table(getattachtablebyaid($aid))." WHERE aid='$aid'");
                if($threadimage['tid'] && $threadimage['pid']) {
                        $firstpost = DB::result_first("SELECT first FROM ".DB::table(getposttablebytid($threadimage['tid']))." WHERE pid='$threadimage[pid]'");
                } else {
                        $firstpost = 0;
                }
                if(empty($firstpost)) {
                        showmessage('set_cover_faild', '', array(), array('closetime' => 3));
                }
                if(setthreadcover(0, 0, $aid)) {
                        $threadimage = daddslashes($threadimage);
                        DB::delete('forum_threadimage', "tid='$threadimage[tid]'");
                        DB::insert('forum_threadimage', array(
                                'tid' => $threadimage['tid'],
                                'attachment' => $threadimage['attachment'],
                                'remote' => $threadimage['remote'],
                        ));
                        showmessage('set_cover_succeed', '', array(), array('alert' => 'right', 'closetime' => 1));
                }
        }
        showmessage('set_cover_faild', '', array(), array('closetime' => 3));

此页面将会获得传递过来的setthreadcover动作,从而开始设置封面操作。
首先这段代码,通过传递过来的$aid ,获取了,包含此附件对应的主题id和帖子id.
如果他的主题id和帖子id同时存在,则根据pid查找这个对应的主题,如果这个能查到对应的主题。则说明这个图片是主题中的有效aid,如果不是直接返回错误信息。
如果上述条件成立,则通过setthreadcover(0, 0, $aid)将aid设置为对应主题的封面。然后将所有封面单独存储在forum_threadimage表中。
如果你的附件封面不成功。就需要仔细检查下你对应的主题是否符合,这段逻辑处理。



ARCHY` 发表于 2011-6-6 12:41:27 | 显示全部楼层
支持下!!
回复

使用道具 举报

我爱炫耀 发表于 2011-9-1 06:36:50 来自手机 | 显示全部楼层
不懂,能说详细点不?
回复

使用道具 举报

yuhudie2199 发表于 2011-9-9 11:25:01 | 显示全部楼层
本帖最后由 yuhudie2199 于 2011-9-9 11:25 编辑

  1.    <?xml version="1.0" encoding="gbk" ?>
  2. - <root>
  3. - <![CDATA[
  4. <h3 class="flb"><em>提示信息</em><span><a href="javascript:;" class="flbc" onclick="hideWindow('setcover5');" title="关闭">关闭</a></span></h3>
  5. <div class="c altw">
  6. <div class="alert_error">封面设置失败<script type="text/javascript" reload="1">if(typeof errorhandle_setcover5=='function') {errorhandle_setcover5('封面设置失败', {});}setTimeout("hideWindow('setcover5')", 3000);</script></div>
  7. </div>
  8. <p class="o pns">
  9. <span class="z xg1">3 秒后窗口关闭</span>
  10. <button type="button" class="pn pnc" id="closebtn" onclick="hideWindow('setcover5');"><strong>确定</strong></button>
  11. <script type="text/javascript" reload="1">if($('closebtn')) {$('closebtn').focus();}</script>
  12. </p>


  13.   ]]>
  14.   </root>
复制代码

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-17 08:31 , Processed in 0.019915 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表