这个是用在后台上传文件里的,主要是目录结构不知道的情况下使用,如果一个系统,在一开始的时候就已经把每一个模块都设置好了,那整个系统的目录结构也是固定下来了,一般不会修改相对的路径,比如:
根目录-首页
|
|-新闻目录
|
|-管理目录
|
-图片目录
像上面这样的目录结构,上传后的文件,相对路径肯定是../图片目录/文件名
就是,如果系统目录不是在一开始的时候就设置好,在做后台的时候,根本不知道前台会有什么东西设置,也不知道别人做前台的时候,会做成什么样的目录结构,我可以控制的,就变成了“后台目录”和“图片目录”了,这时候,如果再在数据库里使用上面的相对路径记录图片文件,就有可能出现路径出错前台读取不到数据库的情况
还有一种情况,也会出现上述情况,比如说生成静态文件时的路径修改了,数据库里如果记录的是相对路径,静态文件中也会无法读取图片
我想,这些就是在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