用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3548|回复: 0
收起左侧

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

[复制链接]
发表于 2012-3-18 12:43:47 | 显示全部楼层 |阅读模式
本帖最后由 我是我 于 2012-4-2 12:43 编辑

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

原先的方法:
共修改了两个文件
1.sys_uploader.php
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
JS复制代码
 
                                        function insert_new_attachment(v)
                                        {
                                        //        v_url = attachment_dir + v[4] + '/' + v[2] + '.' + v[5];
                                                //将原先的相对路径改为绝对路径
                                                v_url = base_url.substr(0,base_url.length-1)+attachment_dir + v[4] + '/' + v[2] + '.' + v[5];
                                                html = "<li id=\"attachment_" + v[0] + "\"><span class=\"title\"><input type=\"text\" class=\"normal\" value=\""+ v_url + "\" />(未保存)</span>";
                                                if(v[3] == 1)
                                                {
                                                        html += "<a href=\"" + v_url + "\" target=\"_blank\">预览</a>";        
                                                }
                                                html += "<a href=\"javascript:void(0);\" onclick=\"if(confirm('是否要删除该附件?')){delete_attachment('"+v[0]+"');}\">删除</a>";        
                                                return html;
                                        }
 
 
复制代码

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

本版积分规则