我有一个接受文件路径的函数。用户可以传递文件的绝对路径或相对路径。如果提供了相对路径,ExpandPath
函数可以将其转换为绝对路径,如下所示:
<cfset filepath = ExpandPath("data/test.txt") >
..然后它返回:
C:\www\example\data\test
但是如果用户提供的绝对路径如下:
<cfset filepath = ExpandPath("C:\www\example\data\test") >
..它返回:
C:\www\example\C:\www\example\data\test
我该如何解决这个问题?
答案 0 :(得分:7)
可能更灵活的方法是检查原始输入中的目录是否存在,如果不存在,请尝试expandpath。像这样:
<cfif directoryExists(myFileLocation)>
<cfset theDirectory=myFileLocation)>
<cfelseif directoryExists(expandPath(myFileLocation))>
<cfset theDirectory=expandPath(myFileLocation)>
<cfelse>
<cfthrow message="Invalid directory!">
</cfif>
答案 1 :(得分:3)
您可以测试字符串并查看它是以C:\开头用于Windows还是用于开始用于unix,并将其用作if? 这可能是你的窗户检查:
<cfif reFindNoCase("[a-zA-Z]:\\",myFileLocation)>
<!--- Is a absolute path --->
<cfelse>
<!--- Is not an absolute path --->
</cfif>