2012-01-04 47 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>`