我正在努力使用以下的cffile代码。我试图传递一个动态生成的图像目录,其名称存储在一个会话变量中(每个新成员一个)。我需要将该名称传递给cffile标记的destination属性:
继承我处理文件上传的代码
<cfset mypath=expandpath('UserImages/UploadedImages/' & '#session.details.uimages#')>
<cffile action="upload" destination="#mypath#" nameconflict="makeunique"/>
如果我用实际目录名替换#session.details.uimages#,上传工作正常。是,我想做什么,可以实现还是不可能?
当我撕裂我的头发时,任何帮助或指导都会受到欢迎!
提前谢谢大家!
答案 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"
/>