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

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
LVL 1
Martyn9098Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
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.

Rodrigo MuneraSr. Software EngineerCommented:
Is there a URL where we can look at the form?
0
Martyn9098Author 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
0
Rodrigo MuneraSr. Software EngineerCommented:
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. :/
0
IT Pros Agree: AI and Machine Learning Key

We’d all like to think our company’s data is well protected, but when you ask IT professionals they admit the data probably is not as safe as it could be.

Rodrigo MuneraSr. Software EngineerCommented:
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

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
Martyn9098Author 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>
0
Martyn9098Author Commented:
If it helps, I get a

struct: [empty]

on the result of a cfdump var = form.

Thanks
0
Martyn9098Author 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
0
Rodrigo MuneraSr. Software EngineerCommented:
Ah!! good to know! glad I could help :)
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
ColdFusion Language

From novice to tech pro — start learning today.