2012-01-04 64 views
1

我在做什么错?将文件上传到对象

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

这条线:

<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将负责其余的事情。

0

嗯,我发现这个代码很多问题。

  1. fileupload.cfm应该是组件文件fileupload。当你正在写组件时,你可以使用cfc
  2. 由于您要直接拨打电话上传方式,因此表单呼叫访问类型必须为REMOTE
  3. 操作页面应该更改为fileupload.cfc?method = uploadFile
  4. 如果将cffile定义为组件的局部变量,则必须在cffile标记中指定result =“cffile”属性。
  5. filefield属性采取表单字段的名称不是它的值,所以只需删除##标记,并使用fileToUpload。

以下是正确的代码。 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>`