0

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

这是我处理文件上传的代码

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

如果我将 #session.details.uimages# 替换为实际的目录名称,则上传工作正常。是,我正在尝试做的事情,可以实现还是不可能?

当我把头发扯掉时,任何帮助或指导都将受到欢迎!

谢谢大家!

4

1 回答 1

6

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

如果 uimages 来自用户,不要忘记首先验证它是一个有效的目录名称(特别是它不包含路径遍历语法,即..)。

此外,您的cffile缺少必需的 filefield 属性。

还要注意会话变量周围缺少散列 - 它们是不必要的。

<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"
/>
于 2012-08-26T01:08:44.997 回答