例如,我只想要一个字段中文件的"文件名".说我有myimage.jpg我只想显示"myimage"我怎么得到那个?
使用List功能对您有利.
请注意,这仅适用于实际具有文件扩展名的文件名(定义为最后一个点之后的文件扩展名).为了使它更安全,以下是更好的:
更复杂的事情:可能有一些以点开头的文件.可能存在包含许多相邻点的文件名.列表函数为它们返回错误的结果,因为它们忽略空列表元素.也可能有文件有点,但没有扩展名.只有在您提供扩展名白名单时才能处理这些内容:ListFindNoCase(FileExt, "doc,xls,ppt,jpg")
.如果您想要考虑所有这些,您可能需要辞职到一个reguar表达式:
要从路径中分割文件名,ColdFusion提供了不同的功能,这些功能也可以处理平台差异:GetFileFromPath()
和GetDirectoryFromPath()
Tomalak的答案很好,但这可能会变得棘手.给定一个名为"mydoc.ver1.doc"(有效的Windows文件名)的文件,它是文件名,是扩展名?如果有文件路径怎么办?
但是,即使在这些情况下,您仍然可以利用列表函数.
您可以轻松地从路径中解析出文件
fullFileName=listLast(fieldname,"\/")
如果你假设文件名是点之前的所有内容,那么
theFileName=listFirst(fullFileName,".")
将工作.
如果你想确保你得到的东西除了最后一段时间后的东西,那么需要一点点诡计,但并不多.没有一个listAllButLast()
功能(尽管CFLIB.org上可能存在这样的事情),但我有两种方法可以想到你想要的东西.
fileName=reverse(listRest(reverse(fullFileName),"."))
要么
fileName=listDeleteAt(fullFileName,listLen(fullFileName,"."),".")
然而,与Tomalak的建议一样,这将打破缺少扩展名的文件名.将其包含在
遗嘱中就可以解释这一点.