这是使用 makeUnique 上传的基本 cffile:
<cffile action = "upload"
destination = "#session.exploc#"
fileField = "form.theupload"
mode = '666'
accept = 'html'
strict = 'true'
result = 'ss'
nameConflict = "makeUnique">
当我上传与现有文件同名的文件时,我可以通过以下方式获取新名称:
<cfset name = ss.ServerFileName>
我多次上传文件 worl1.html 并获得名称 worl、worl12、worl13 等。然后我退出应用程序并稍后回来。
当我再次上传 worl1.html 时,我收到一条错误消息,指出文件 worl12 已经存在。所以显然 makeUnique 只检查一次,并且不检查该文件的后续版本。
围绕这个编码似乎很痛苦。我必须将每个文件上传到一个虚拟位置,然后检查自己是否存在于真实位置并在必要时重命名它。然后我必须从虚拟位置删除文件,以防下一个发生冲突。
任何人都可以提出一种无需大量额外代码即可解决此问题的方法。至少我需要捕获错误并给用户一个他可以理解的消息。但是抓住实际问题并解决它会更好。我需要它在 ColdFusion 10 中工作,但如果它也能在 Lucee 中工作,那就太好了。