上传文件在对象中

时间:2012-01-04 20:06:31

标签: file-upload coldfusion coldfusion-9

我做错了什么?

fileUpload.cfm

<cfcomponent name="fileAttachment" hint="This is the File Attachment Object">

    <cffunction name="uploadFile" access="public" output="no" returntype="string">
        <cfargument name="fileToUpload" type="string" required="no">
        <cfargument name="pDsn" required="no" type="string">
        <cfset var cffile = "">
        <cffile action="upload" destination="D:\apache\htdocs\abc\uploads" filefield="#ARGUMENTS.fileToUpload#" nameconflict="makeunique">
        <cfreturn cffile.clientFile />
    </cffunction>

</cfcomponent>

test_fileUpload.cfm

<form action="fileUpload.cfm" enctype="multipart/form-data" method="post">
    <input type="file" name="fileToUpload"><br/>
    <input type="submit">
</form>

2 个答案:

答案 0 :(得分:2)

这一行:

<cffile action="upload" destination="D:\apache\htdocs\abc\uploads" filefield="#ARGUMENTS.fileToUpload#" nameconflict="makeunique">

filefield属性需要包含上传文件的表单字段的名称。你是在正确的轨道上,但不幸的是,这不是#ARGUMENTS.fileToUpload#的价值,目前 - 基于你的构造,它保留了对实际文件本身的引用。

在表单中添加一个新的隐藏字段:

<input type="hidden" name="nameOfField" value="fileToUpload">

然后,将FORM.nameOfField作为第一个参数传递给uploadFile()方法。 CFFILE将负责其余的工作。

答案 1 :(得分:0)

好吧,我发现这个代码有很多问题。

  1. fileupload.cfm应该是组件文件fileupload。 cfc ,因为您正在编写组件。
  2. 当您打算从表单调用访问类型直接调用上传方法时,必须 REMOTE
  3. 操作页面应更改为fileupload.cfc?method = uploadFile
  4. 如果将cffile定义为组件的局部变量,则必须在cffile标记中指定result =“cffile”属性。
  5. filefield属性使用表单字段的名称而不是其值,因此只需删除##标记并使用fileToUpload。
  6. 下面是正确的代码。 的 fileupload.cfc    

    <cffunction name="uploadFile" access="remote" output="no" returntype="string">
        <cfargument name="fileToUpload" type="string" required="no">
        <cfargument name="pDsn" required="no" type="string">
        <cfset var cffile = "">
        <cffile action="upload" destination="D:\apache\htdocs\abc\uploads" filefield="fileToUpload" result="cffile" nameconflict="makeunique">
        <cfreturn cffile.clientFile />
    </cffunction>
    
    </cfcomponent>
    

    <强> test_fileupload.cfm

    `<form action="fileupload.cfc?method=uploadFile" enctype="multipart/form-data" method="post">
       <input type="file" name="fileToUpload"><br/>
       <input type="submit">   </form>`