Making my form submit to itself and upload a file properly (cffile)

I have a detail/update page that has to do with showing the details of a file on a website, and on this page you can also update the details of the file. One update you can do is also upload a more recent copy of the file and overwrite the original.

My problem is I cannot get the file upload to function properly and store the actual file name in the database with the form submitting to the same page.
<cfinclude template="../../../includes/common/KT_common.cfm">
<cfinclude template="../../../includes/tng/tNG.inc.cfm">
<cfscript>
// Make a transaction dispatcher instance
tNGs = Request.tNG_CreateObject("tNG_dispatcher");
tNGs.init("../../../");
</cfscript>
<cfscript>
// Start trigger
formValidation = Request.tNG_CreateObject("triggers.tNG_FormValidation");
formValidation.init();
tNGs.prepareValidation(formValidation);
// End trigger
</cfscript>
<cfscript>
// Make an update transaction instance
upd_Links = Request.tNG_CreateObject("tNG_update");
upd_Links.init("USAMRAA_external");
tNGs.addTransaction(upd_Links);
// Register triggers
upd_Links.registerTrigger("STARTER", "Trigger_Default_Starter", 1, "POST", "KT_Update1");
upd_Links.registerTrigger("BEFORE", "Trigger_Default_FormValidation", 10, formValidation);
upd_Links.registerTrigger("END", "Trigger_Default_Redirect", 99, "index.cfm?page=12&linkID={linkID}");
// Add columns
upd_Links.setTable("Links");
upd_Links.addColumn("linkLabel", "STRING_TYPE", "POST", "linkLabel");
upd_Links.addColumn("URL", "STRING_TYPE", "POST", "URL");
upd_Links.addColumn("linkOrder", "NUMERIC_TYPE", "POST", "linkOrder");
upd_Links.addColumn("pageID", "STRING_TYPE", "POST", "pageID");
upd_Links.addColumn("pubStatus", "NUMERIC_TYPE", "POST", "pubStatus");
upd_Links.addColumn("linkSubCatID", "NUMERIC_TYPE", "POST", "linkSubCatID");
upd_Links.addColumn("linkSubSubCatID", "NUMERIC_TYPE", "POST", "linkSubSubCatID");
upd_Links.addColumn("linkLabelAcronym", "STRING_TYPE", "POST", "linkLabelAcronym");
upd_Links.addColumn("pageAnchors", "STRING_TYPE", "POST", "pageAnchors");
upd_Links.addColumn("lastUpdated", "DATE_TYPE", "POST", "lastUpdated");
upd_Links.addColumn("filename", "STRING_TYPE", "POST", "uploadfile");
upd_Links.addColumn("fileType", "STRING_TYPE", "POST", "filetype");
upd_Links.setPrimaryKey("linkID", "NUMERIC_TYPE", "GET", "linkID");
</cfscript>
<cfscript>
// Execute all the registered transactions
tNGs.executeTransactions();
</cfscript>
<cfscript>
// Get the transaction recordset
rsLinks = tNGs.getRecordset("Links");
</cfscript>
<cfquery name="qGetPageName" datasource="external">
Select *
From pages
Order By PageName 
</cfquery>
<cfquery name="qGetLinkType" datasource="external">
Select *
From LinkType
Order By linkType 
</cfquery>
<cfquery name="getSubCategory" datasource="external" >
SELECT *
FROM   LinksubCat
Order by subCatName 
</cfquery>
<cfquery name="getSubSubCategory" datasource="external">
SELECT *
FROM LinksubSubCat
Order by linksubSubCatName 
</cfquery>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>File Detail/ Update</title>
<script src="../../../includes/common/js/base.js" type="text/javascript"></script>
<script src="../../../includes/common/js/utility.js" type="text/javascript"></script>
<script src="../../../includes/skins/style.js" type="text/javascript"></script>
<link href="../../../includes/skins/mxkollection3.css" rel="stylesheet" type="text/css" media="all" />
<cfoutput>#tNGs.displayValidationRules()#</cfoutput>
</head>
<body>
<cfparam name="FORM.uploadfile" default="">
<cfparam name="FORM.filetype" default="">
<cfoutput>#tNGs.getErrorMsg()#</cfoutput>
<cfform action="<cfoutput>#Request.KT_escapeAttribute(Request.KT_getFullUri())#</cfoutput>" method="post" enctype="multipart/form-data" id="form1">
  <h3>Editing: <cfoutput>#rsLinks.linkLabel#</cfoutput></h3>
  <table cellpadding="2" cellspacing="0" class="KT_tngtable" id="standard_table" >
    <tr>
      <td class="KT_th"><label for="linkLabel">Link Label:</label></td>
      <td><input type="text" name="linkLabel" id="linkLabel" value="<cfoutput>#Request.KT_escapeAttribute(rsLinks.linkLabel)#</cfoutput>" size="100" />
        <cfoutput>#tNGs.displayFieldHint("linkLabel")#</cfoutput> <cfoutput>#tNGs.displayFieldError("Links", "linkLabel")#</cfoutput> </td>
    </tr>
    <tr>
      <td class="KT_th"><label for="URL">File Path:</label></td>
      <td><input type="text" name="URL" id="URL" value="<cfoutput>#Request.KT_escapeAttribute(rsLinks.URL)##Request.KT_escapeAttribute(rsLinks.fileName)#</cfoutput>" size="70" />
        <cfoutput>#tNGs.displayFieldHint("URL")#</cfoutput> <cfoutput>#tNGs.displayFieldError("Links", "URL")#</cfoutput> </td>
    </tr>
    <tr>
      <td class="KT_th"><label for="uploadfile">Update File:</label></td>
      <td><input name="uploadfile1" type="file" id="uploadfile1" size="70" />
        <label for="filetype">File Type:</label>
        <select name="filetype" id="filetype">
          <option selected="selected">Select One</option>
          <option value="doc">DOC</option>
          <option value="pdf">PDF</option>
          <option value="ppt">PPT</option>
        </select></td>
    </tr>
    <tr>
      <td class="KT_th"><label for="linkOrder">Order:</label></td>
      <td><input type="text" name="linkOrder" id="linkOrder" value="<cfoutput>#Request.KT_escapeAttribute(rsLinks.linkOrder)#</cfoutput>" size="32" />
        <cfoutput>#tNGs.displayFieldHint("linkOrder")#</cfoutput> <cfoutput>#tNGs.displayFieldError("Links", "linkOrder")#</cfoutput> </td>
    </tr>
    <tr>
      <td class="KT_th"><label for="pageID">Page ID:</label></td>
      <td><select name="pageID" id="pageID">
          <option value="" <cfif (isDefined("rsLinks.pageID") AND #qGetPageName.PageID# EQ "#rsLinks.pageID#")>selected</cfif>><cfoutput>#qGetPageName.PageName#</cfoutput></option>
          <cfoutput query="qGetPageName">
            <option value="#qGetPageName.PageID#" <cfif (isDefined("rsLinks.pageID") AND #qGetPageName.PageID# EQ "#rsLinks.pageID#")>selected</cfif>>#qGetPageName.PageName# - #qGetPageName.PageID#</option>
          </cfoutput>
        </select>
        <cfoutput>#tNGs.displayFieldHint("pageID")#</cfoutput> <cfoutput>#tNGs.displayFieldError("Links", "pageID")#</cfoutput> </td>
    </tr>
    <tr>
      <td class="KT_th"><label for="pubStatus">Published?</label></td>
      <td><select name="pubStatus" id="pubStatus">
          <cfoutput>
            <cfif #rsLinks.pubStatus# EQ "1">
              <option value="1" selected>Yes</option>
              <option value="0" >No</option>
              <cfelse>
              <option value="0" selected>No</option>
              <option value="1" >Yes</option>
            </cfif>
            </option>
          </cfoutput>
        </select>
        <cfoutput>#tNGs.displayFieldHint("pubStatus")#</cfoutput> <cfoutput>#tNGs.displayFieldError("Links", "pubStatus")#</cfoutput> </td>
    </tr>
    <tr>
      <td class="KT_th"><label for="linkSubCatID">SubCategory:</label></td>
      <td><select name="linkSubCatID" id="linkSubCatID">
          <option value="" <cfif (isDefined("rsLinks.linkSubCatID") AND #getSubCategory.subCatID# EQ "#rsLinks.linkSubCatID#")>selected</cfif>><cfoutput>#getSubCategory.subCatName#</cfoutput></option>
          <cfoutput query="getSubCategory">
            <option value="#getSubCategory.subCatID#" <cfif (isDefined("rsLinks.linkSubCatID") AND #getSubCategory.subCatID# EQ "#rsLinks.linkSubCatID#")>selected</cfif>>#getSubCategory.subCatName#</option>
          </cfoutput>
        </select>
        <cfoutput>#tNGs.displayFieldHint("linkSubCatID")#</cfoutput> <cfoutput>#tNGs.displayFieldError("Links", "linkSubCatID")#</cfoutput> </td>
    </tr>
    <tr>
      <td class="KT_th"><label for="linkSubSubCatID">Sub-SubCategory:</label></td>
      <td><select name="linkSubSubCatID" id="linkSubSubCatID">
          <option value="" <cfif (isDefined("rsLinks.linkSubSubCatID") AND #getSubSubCategory.subCatID# EQ "#rsLinks.linkSubSubCatID#")>selected</cfif>><cfoutput>#getSubSubCategory.linksubSubCatName#</cfoutput></option>
          <cfoutput query="getSubSubCategory">
            <option value="#getSubSubCategory.subSubCatID#" <cfif (isDefined("rsLinks.linkSubSubCatID") AND #getSubSubCategory.subSubCatID# EQ "#rsLinks.linkSubSubCatID#")>selected</cfif>>#getSubSubCategory.linksubSubCatName#</option>
          </cfoutput>
        </select>
        <cfoutput>#tNGs.displayFieldHint("linkSubSubCatID")#</cfoutput> <cfoutput>#tNGs.displayFieldError("Links", "linkSubSubCatID")#</cfoutput> </td>
    </tr>
    <tr>
      <td class="KT_th"><label for="linkLabelAcronym">Acronym:</label></td>
      <td><input type="text" name="linkLabelAcronym" id="linkLabelAcronym" value="<cfoutput>#Request.KT_escapeAttribute(rsLinks.linkLabelAcronym)#</cfoutput>" size="32" />
        <cfoutput>#tNGs.displayFieldHint("linkLabelAcronym")#</cfoutput> <cfoutput>#tNGs.displayFieldError("Links", "linkLabelAcronym")#</cfoutput> </td>
    </tr>
    <tr>
      <td class="KT_th"><label for="pageAnchors">Page Anchors:</label></td>
      <td><input type="text" name="pageAnchors" id="pageAnchors" value="<cfoutput>#Request.KT_escapeAttribute(rsLinks.pageAnchors)#</cfoutput>" size="32" />
        <cfoutput>#tNGs.displayFieldHint("pageAnchors")#</cfoutput> <cfoutput>#tNGs.displayFieldError("Links", "pageAnchors")#</cfoutput> </td>
    </tr>
    <tr>
      <td class="KT_th"><label for="lastUpdated">Last Updated:</label></td>
      <td><input type="text" name="lastUpdated" id="lastUpdated" value="<cfoutput>#Request.KT_escapeAttribute(rsLinks.lastUpdated)#</cfoutput>" size="32" />
        <cfoutput>#tNGs.displayFieldHint("lastUpdated")#</cfoutput> <cfoutput>#tNGs.displayFieldError("Links", "lastUpdated")#</cfoutput> </td>
    </tr>
    <tr class="KT_buttons">
      <td colspan="2"><input type="submit" name="KT_Update1" id="KT_Update1" value="Update record" />
      </td>
    </tr>
  </table>
</cfform>
<cfif #FORM.filetype# EQ "pdf">
  <cfset uploadDestination = "C:\Inetpub\wwwroot\internet\site\pages\pdf\">
  <cfelseif #FORM.filetype# EQ "ppt">
  <cfset uploadDestination = "C:\Inetpub\wwwroot\internet\site\pages\ppt\">
  <cfelseif #FORM.filetype# EQ "doc">
  <cfset uploadDestination = "C:\Inetpub\wwwroot\internet\site\pages\doc\">
  <cfelseif #FORM.filetype# EQ "">
  <cfset uploadDestination = "C:\Inetpub\wwwroot\internet\site\pages\">
</cfif>
<cfset files = ArrayNew(1)>
<cfloop from="1" to="1" index="i" >
  <cffile action="upload" destination="#uploadDestination#" filefield="FORM.uploadfile#i#" nameconflict="makeunique">
  <!--- add the file info to our array --->
  <!--- append the file data to the array --->
  <cfset ArrayAppend(files, Duplicate(cffile))>
  <!--- append some value representing "no file"--->
  <cfset ArrayAppend(files, "")>
</cfloop>
<cfif IsStruct( files[1] ) AND structKeyExists( files[1], "ServerFile")>
  <cfparam name="uploadfile"  default="#files[1].ServerFile#">
</cfif>
<cfdump var="#form#">
<p>&nbsp;</p>
</body>
</html>

Open in new window

LVL 2
rrattieAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

3ComGSOCommented:
Hi, I always set a variable of the filename after the cfile.

<cfset filename1 = "">
  <cfif form.file1 is not "">
    <cffile action="upload" destination="#application.filedir#" filefield="form.file1" nameconflict="overwrite">
    <cfset filename1 = "#cffile.ClientFileName#.#cffile.ClientFileExt#">
  </cfif>
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
ZvonkoSystems architectCommented:
You do handle the file upload at the bottom of the page.
Place the upload at the top of the page processing.
Of course you have to move up also all relevant tags like cfparam and so on.

0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Web Servers

From novice to tech pro — start learning today.