我是我 发表于 2012-3-18 12:43:47

dilicms附件上传生成地址由相对路径改为绝对路径

本帖最后由 我是我 于 2012-4-2 12:43 编辑

      最近在用dilicms做个站,发现附件上传生成的是相对与根目录的地址,在后台添加的时候图片无法直接显示。而且我的网站没有放在根目录下,于是就在生成的地址前加上了 base_url() ,使生成的地址变成绝对地址。
后来发现了个更好的办法:
platform_default.php文件,53行
               
public function file_url($path = '')
                {
                        //return '/'.setting('attachment_dir').'/'.$path;
                        return base_url().setting('attachment_dir').'/'.$path;
                }
原先的方法:
共修改了两个文件
1.sys_uploader.php

                        <?php foreach($attachment as $v): ?>
                        <li id="attachment_<?php echo $v['aid']; ?>">
                                                      <!--将附件显示地址由相对路径改为绝对路径,base_url()最后有斜杆"/"所以截取掉-->
                            <span class="title"><input type="text" class="normal" value="<?php echo $v_url = substr(base_url(),0,strlen(base_url())-1). $this->platform->file_url($v['folder'].'/'.$v['name'].'.'.$v['type']); ?>" /></span>
                            <?php if($v['image'] == 1): ?>
                            <a href="<?php echo $v_url; ?>" target="_blank">预览</a>
                            <?php endif;?>
                            <a href="javascript:void(0);">删除</a>
                        </li>
                        <?php endforeach; ?>


这是个视图文件,打开内容编辑页面就会加载。
2.upload.js

                                        function insert_new_attachment(v)
                                        {
                                        //      v_url = attachment_dir + v + '/' + v + '.' + v;
                                                //将原先的相对路径改为绝对路径
                                                v_url = base_url.substr(0,base_url.length-1)+attachment_dir + v + '/' + v + '.' + v;
                                                html = "<li id=\"attachment_" + v + "\"><span class=\"title\"><input type=\"text\" class=\"normal\" value=\""+ v_url + "\" />(未保存)</span>";
                                                if(v == 1)
                                                {
                                                      html += "<a href=\"" + v_url + "\" target=\"_blank\">预览</a>";      
                                                }
                                                html += "<a href=\"javascript:void(0);\" onclick=\"if(confirm('是否要删除该附件?')){delete_attachment('"+v+"');}\">删除</a>";      
                                                return html;
                                        }


在附件生成成功后会调用这个js脚本在文本框里显示生成文件的路径。
因为base_url()最后会有斜杆所以用了截取函数,不知道大家有什么更好的办法,

页: [1]
查看完整版本: dilicms附件上传生成地址由相对路径改为绝对路径