我正在学习一些 Coldfusion,但我在为同事构建的这个基于小型表单的应用程序时遇到了问题。
这是第一页: http: //pastebin.com/aLPYHPsF
如您所见,我想要做的是获取用户输入并将该输入输出到 html。文字工作正常,但我无法上传图片!我想要做的是让用户点击上传,得到确认,然后点击提交,他们被发送到生成的 html (cfm) 页面。页面上是他们上传的图片的调整大小版本。请告诉我我做错了什么!现在,当单击“上传”时,表单只是转储。
我正在学习一些 Coldfusion,但我在为同事构建的这个基于小型表单的应用程序时遇到了问题。
这是第一页: http: //pastebin.com/aLPYHPsF
如您所见,我想要做的是获取用户输入并将该输入输出到 html。文字工作正常,但我无法上传图片!我想要做的是让用户点击上传,得到确认,然后点击提交,他们被发送到生成的 html (cfm) 页面。页面上是他们上传的图片的调整大小版本。请告诉我我做错了什么!现在,当单击“上传”时,表单只是转储。
这是因为您忘记将 enctype="multipart/form-data" 分配给您的第一个 cfform。我已经编辑了你的一些编码。一探究竟。
<cfset strPath = ExpandPath( "./" ) />
<cfset strPath = GetDirectoryFromPath(GetCurrentTemplatePath()) />
<table width="100%">
<tr>
<td align="center">
<cfform name="ecaform" action="ecagenerator.cfm" enctype="multipart/form-data">
<table style="font-family: arial; font-size: 9pt">
<tr><td height="30px" align="center" colspan="2" style="background-color: #020058; color: #FFFFFF; font-family: arial;">
<b>ECA Newsletter Creation Form</b>
</td>
</tr>
<tr><td height="20"></td></tr>
<tr>
<td>Earned from:</td>
<td>
<cfinput
type="radio"
name="earnedfrom"
value="UC">
UC
<cfinput
type="radio"
name="earnedfrom"
value="ECA">
ECA
</td>
</tr>
<tr>
<td>First Name:</td>
<td>
<cfinput
name="firstname">
</td>
</tr>
<tr>
<td>Last Name:</td>
<td>
<cfinput
name="lastname">
</td>
</tr>
<tr>
<td>Instructor's Name:</td>
<td>
<cfinput
name="instructorname">
</td>
</tr>
<tr>
<td>Date (MM/DD/YYYY):</td>
<td>
<cfinput
name="date">
</td>
</tr>
<tr>
<td>Sex:</td>
<td>
<cfinput
type="radio"
name="sex"
value="male">
Male
<cfinput
type="radio"
name="sex"
value="female">
Female
</td>
</tr>
<tr>
<td>Certificate Type:</td>
<td>
<cfinput
type="radio"
name="certtype"
value="Private">
Private
<cfinput
type="radio"
name="certtype"
value="Recreational">
Recreational
<cfinput
type="radio"
name="certtype"
value="Commercial">
Commercial
</td>
</tr>
</table>
<table style="font-family: arial; font-size: 9pt; margin-top: 20 px;">
<tr>
<td>
Upload the photo:
</td>
</tr>
<tr>
<td>
<cfif isDefined("form.fileUpload")>
<cffile action="upload"
fileField="fileUpload"
destination="#strPath#"
accept="image/*">
<cfimage action="resize"
width="200"
height="200"
source="#strPath##file.serverfile#"
destination="#strPath##file.serverfile#"
overwrite="yes">
<img src="<cfoutput>#file.serverfile#</cfoutput>">
</cfif>
</td>
</tr>
<tr>
<td>
<form enctype="multipart/form-data"
method="post">
<input type="file"
name="fileUpload" /><br /><br />
<input type="submit"
value="Submit"
action="ecagenerator.cfm" />
</form>
</td>
</tr>
</table>
<table style="margin-top: 20px;">
<tr>
<td>
<cfinput
type="submit"
name="Submit"
value="Submit">
</td>
</tr>
</table>
</cfform>
</td>
</tr>
</table>
您可能想研究使用<cfdiv>
图像上传部分。基本上,您希望用于图像上传的表单位于内部<cfdiv>
,以便通过 ajax 提交表单。将图像表单操作发布到使用 的 previewImage.cfm 中<cffileupload>
,验证isImageFile()
它是否是图像文件,然后使用<cfimage>
来调整它的大小并显示缩略图(可以使用action="writetobrowser"
)。如果您不想编写额外的 Javascript 代码,我猜想将上传的图像与父表单相关联的最简单方法是将文件路径存储在 Session 中。