Coldfusion enctype multipart/form-data cannot access other form data

Martyn9098
Martyn9098 used Ask the Experts™
on
Hi,

I have created a form using the <cfform> tag and because part of my form requires a file upload I have set the enctype to multipart/form-data however when doing this the file is uploaded but I cannot access any of the other form fields data. If I remove the enctype I cannot upload the file but I can access the other form field data.

Any ideas ?

Thanks

Martyn
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Rodrigo MuneraSr. Software Engineer

Commented:
Is there a URL where we can look at the form?

Author

Commented:
Sadly no, it's an internal admin portal i'm creating. The company would not allow me to show / post etc. I think this maybe my downfall.

Martyn
Rodrigo MuneraSr. Software Engineer

Commented:
Just ran that scenario on my server and it's working as intended. Without being able to see your code, I can't really help diagnose your issue. :/
Become a CompTIA Certified Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

Sr. Software Engineer
Commented:
BTW, this is the code I ran:

		<cfif isDefined("form")>
			<cfdump var="#form#">
			<cfif isdefined("form.filefield")>
				<cffile action="upload" destination="test" filefield="FORM.fileField" nameconflict="makeunique">
					<cfdump var="#file#">
			</cfif>
		</cfif>
		<cfform method="post" enctype="multipart/form-data" format="">
			<cfinput name="textField" type="text" value="Test Text">
			<cfinput type="file" name="fileField" >
			<cfinput type="submit" name="submit" value="Submit"> 
			
		</cfform>

Open in new window

Author

Commented:
Thanks Rodrigo, I think that helps prove it's an issue with my code.
Form code below if you can help ? I have no other option but to post it.

thanks

Martyn

<cfform action="addadvert.cfm" method="post" enctype="multipart/form-data" id="form" name="form">
          <tr>
            <td width="150" class="formdata" align="right">&nbsp;Company Name</td>
            <td width="448" colspan="2">&nbsp;
              <cfinput alt="Company Name" size="60" id="cname" maxlength="100" name="cname" tabindex="1" type="text" value="" /></td>
          </tr>
          <tr>
            <td width="150" class="hintdata" align="right">(Max 50 chars)&nbsp;</td>
            <td colspan="2" align="right" class="hintdata">&nbsp;</td>
          </tr>
          <tr>
            <td colspan="3"><br /></td>
          </tr>
          <tr>
            <td width="150" class="formdata" align="right" valign="top">&nbsp;Website Address<br />
              <span class="hintdata">(Max 255 chars)&nbsp;</span></td>
            <td colspan="2">&nbsp;
              <cfinput alt="Website Address" size="60" id="wurl" maxlength="255" name="wurl" tabindex="2" ></td>
          </tr>
          <tr>
            <td colspan="3"><br /></td>
          </tr>
          <tr>
            <td width="150" class="formdata" align="right">&nbsp;Category</td>
            <td colspan="2">&nbsp;
              <cfselect id="category" name="category"> <cfoutput query="bdcats">
                <option value="#bdcats.name#">#bdcats.name#</option>
              </cfoutput> </cfselect></td>
          </tr>
          <tr>
            <td colspan="3"><br /></td>
          </tr>
          <tr>
            <td width="150" class="formdata" align="right">&nbsp;Advert Type</td>
            <td colspan="2">&nbsp;
              <cfselect tabindex="4" name="atype" id="atype">
              <option value="Square">Square</option>
              <option value="Horizontal Rectangle">Horizontal Rectangle</option>
              <option value="Vertical Rectangle">Vertical Rectangle</option>
              </cfselect></td>
          </tr>
          <tr>
          <tr>
            <td colspan="3"><br /></td>
          </tr>
          <tr>
            <td width="150" class="formdata" align="right" valign="top">&nbsp;Advert Status<br /></td>
            <td colspan="2">&nbsp;
              <cfselect tabindex="5" name="status" id="status">
              <option value="1">Live</option>
              <option value="0">Dead</option>
              </cfselect></td>
          </tr>
          <tr>
            <td colspan="3"><br /></td>
          </tr>
          <tr>
          <tr>
            <td width="150" class="formdata" align="right" valign="top">&nbsp;Upload Advert</td>
            <td colspan="2">&nbsp;
             
              <!---
    Create folder structure or change to fit your needs
    Expects images to be uploaded to images and thumbnails go in thumbs
 --->
             
              <!--- set the full path to the images folder --->
             
              <cfset mediapath = expandpath('tmpimages')>
             
              <!--- set the desired image height ---->
             
              <cfset thumbsize = 164>
             
              <!--- set the desired image width --->
             
              <cfset imagesize = 164>
              <cfif structKeyExists(form,"fileUpload") and len(form.fileUpload)>
                <cffile action="upload"
    filefield="FileUpload"
    destination="#MediaPath#"
    nameconflict="makeunique">
               
                <!--- read the image ---->
                <cfimage name="uploadedImage"
    source="#MediaPath#/#file.serverFile#" >
               
                <!--- figure out which way to scale the image --->
                <cfif uploadedImage.width gt uploadedImage.height>
                  <cfset thmb_percentage = (thumbsize / uploadedImage.width)>
                  <cfset percentage = (imagesize / uploadedImage.width)>
                  <cfelse>
                  <cfset thmb_percentage = (thumbsize / uploadedImage.height)>
                  <cfset percentage = (imagesize / uploadedImage.height)>
                </cfif>
               
                <!--- calculate the new thumbnail and image height/width --->
                <cfset thumbWidth = round(uploadedImage.width * thmb_percentage)>
                <cfset thumbHeight = round(uploadedImage.height * thmb_percentage)>
                <cfset newWidth = round(uploadedImage.width * percentage)>
                <cfset newHeight = round(uploadedImage.height * percentage)>
               
                <!--- see if we need to resize the image, maybe it is already smaller than our desired size --->
                <cfif uploadedImage.width gt imagesize>
                  <cfimage action="resize"
        height="#newHeight#"
        width="#newWidth#"
        source="#uploadedImage#"
       destination="#MediaPath#/#file.serverFile#"
        overwrite="true"/>
                </cfif>
               
                <!--- create a thumbnail for the image --->
                <cfimage action="resize"
     height="#thumbHeight#"
     width="#thumbWidth#"
     source="#uploadedImage#"
     destination="../images/ads/#file.serverFile#"
     overwrite="true"/>
                <cfoutput>
                  <cflocation url="addadvert.cfm">
                  <img src="../newsimages/thumbs/#file.serverFile#" height="#thumbHeight#" width="#thumbWidth#" align="left" hspace="10"><br>
                  Original Image: #uploadedImage.width#x#uploadedImage.height#<br>
                  Resized Image: #newWidth#x#newHeight#<br>
                  Thumbnail: #thumbWidth#x#thumbHeight#<br>
                  <br>
                </cfoutput>
              </cfif>
              <cfinput type="file" name="fileUpload" id="fileUpload"></td>
          </tr>
          <tr>
            <td colspan="3"><br /></td>
          </tr>
          <tr>
            <td width="150" class="formdata" align="right">&nbsp;Created By</td>
            <td colspan="2">&nbsp;
              <cfinput alt="Created By" size="60" disabled="disabled" id="cby" maxlength="50" name="cby" tabindex="6" type="text" value="#session.realname#" /></td>
          </tr>
          <tr>
            <td colspan="3">&nbsp;</td>
          </tr>
          <tr>
            <td colspan="3"><cfinput type="hidden" name="add" id="add" value="add" />
              <br /></td>
          </tr>
          <tr>
            <td width="150" class="formdata" align="right">&nbsp;</td>
            <td colspan="2">&nbsp;
              <cfinput name="Submit"  type="submit"  value="Submit" tabindex="6" />
              <cfinput type="button" name="cancel" value="cancel" onClick="javascript:location.href='bdentry.cfm';"></td>
          </tr>
          <tr>
            <td colspan="3"><br /></td>
          </tr>
        </cfform>

Author

Commented:
If it helps, I get a

struct: [empty]

on the result of a cfdump var = form.

Thanks

Author

Commented:
The cfdump routine allowed me to investigate more to find the cflocation tag I left in there causing the form data to be lost.

Many thanks

Martyn
Rodrigo MuneraSr. Software Engineer

Commented:
Ah!! good to know! glad I could help :)

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial