将动态生成的目录名传递给cffile标记的Destination属性

时间:2012-08-25 23:58:33

标签: file-upload coldfusion cffile

我正在努力使用以下的cffile代码。我试图传递一个动态生成的图像目录,其名称存储在一个会话变量中(每个新成员一个)。我需要将该名称传递给cffile标记的destination属性:

继承我处理文件上传的代码

<cfset mypath=expandpath('UserImages/UploadedImages/' & '#session.details.uimages#')>
<cffile action="upload" destination="#mypath#" nameconflict="makeunique"/>

如果我用实际目录名替换#session.details.uimages#,上传工作正常。是,我想做什么,可以实现还是不可能?

当我撕裂我的头发时,任何帮助或指导都会受到欢迎!

提前谢谢大家!

1 个答案:

答案 0 :(得分:6)

如果目录不存在,则需要先创建它。

如果uimages来自用户,请不要忘记首先验证它是否是有效的目录名称(具体而言,它不包含路径遍历语法,即..)。

此外,您的cffile缺少必需的文件字段属性。

请注意会话变量周围缺少哈希值 - 它们是不必要的。

<cfset MyPath = expandPath( 'UserImages/UploadedImages/' & session.details.uimages ) />

<cfif NOT DirectoryExists( MyPath )>
    <cfset DirectoryCreate( MyPath ) />
</cfif>

<cffile
    action       = "upload"
    destination  = "#MyPath#"
    nameconflict = "makeunique"
    filefield    = "name_of_field_to_upload_from"
/>