您所在的位置: 程序员家园 -> 家园博客 ->
 
在哪里摔倒
就在哪里自己爬起来

用户登录

查  找

最新评论

最新留言

常用网站

网易邮箱 GMAIL  

百度搜索 MSDN

霏凡软件 BT精品

影视帝国 射 手 网

电驴下载 全 库 网

友情连接

茄菲的窝 冰冰博客

枫叶飘零 玫  瑰

ACEN 云 豹 子

统  计



从当前文件的相对路径取绝对路径
狼子 发表于 2007-9-3 18:27:00 阅读全文 | 回复(0) | 引用通告 | 编辑

这个是用在后台上传文件里的,主要是目录结构不知道的情况下使用,如果一个系统,在一开始的时候就已经把每一个模块都设置好了,那整个系统的目录结构也是固定下来了,一般不会修改相对的路径,比如:

根目录-首页
   |
   |-新闻目录
   |
   |-管理目录
   |
   -图片目录

像上面这样的目录结构,上传后的文件,相对路径肯定是../图片目录/文件名

就是,如果系统目录不是在一开始的时候就设置好,在做后台的时候,根本不知道前台会有什么东西设置,也不知道别人做前台的时候,会做成什么样的目录结构,我可以控制的,就变成了“后台目录”和“图片目录”了,这时候,如果再在数据库里使用上面的相对路径记录图片文件,就有可能出现路径出错前台读取不到数据库的情况

还有一种情况,也会出现上述情况,比如说生成静态文件时的路径修改了,数据库里如果记录的是相对路径,静态文件中也会无法读取图片

我想,这些就是在html编辑器里经常使用绝对路径记录上传的文件路径的原因吧

这里记录的就是从当前文件的相对路径取绝对路径的方法,今天下午搞的,上传文件的时候,得到的是相对于当前文件的相对路径,要记录到数据库里的是绝对路径,那就要转换

public string GetAbsolutePath(string absolutePath, string relativePath)
    {
        string fileName = relativePath.Replace("../", "");
        //取../出现的次数
        int parentPathGrade = (relativePath.Length - fileName.Length) / 3;

        string[] uriArray = absolutePath.Split('/');

        absolutePath = "";
        parentPathGrade = uriArray.Length - (parentPathGrade + 1);

        for (int i = 0; i < parentPathGrade; i++)
        {
            absolutePath += uriArray[i] + "/";
        }

        absolutePath += fileName;

        return absolutePath;
    }

调用的时候这样子来:GetAbsolutePath(Request.Url.AbsoluteUri, "../../uploadFiles/2007/09/03/20070903152944484.gif");

我的思路是,如果是同一个目录下的,就不会有../这种转向上一级目录的路径,有几个这种路径,就把当前文件所在的路径往上扔掉几个目录,然后呢,再加上现在的图片路径和图片名称就可以了

记录帖子:http://www.tiantiansoft.com/bbs/dispbbs.asp?boardID=40&ID=158310

发表评论:

    昵称:
    密码:
    主页:
    标题:
Powered by Oblog.