cffile正在覆盖现有文件

问题描述

nameconflict属性似乎没有很好的文档说明,所以也许我使用的是错误的。但是,如果我使用以下代码编写文件(二进制数据),它将覆盖现有的同名文件

<cffile action="write" file="/path/#data.name#" output="#d#" nameconflict="MakeUnique" mode="775">

解决方法

nameconflict="MakeUnique" 仅适用于<cffile action="upload"

覆盖文件是<cffile action="write"的默认行为

除非出于显示目的不需要确切的文件名,否则最好使用唯一ID作为文件名来确保我们不会覆盖文件。

<cfset newFile = '/path/' & CreateUUID() & '.' & ListLast(data.name,'.')>
<cffile action="write" file="#newFile#" output="#d#" mode="775">

注意:对于需要出于视图目的使用自定义文件名的用例,最好将原始文件名保存在数据库中,并将文件名保留在文件系统中的单独列中。