Формы Coldfusion и загрузка изображений с помощью cffile - PullRequest
1 голос
/ 12 августа 2010

Я изучаю Coldfusion, и у меня возникают проблемы с этим небольшим приложением на основе форм, которое я создаю для коллеги.

Вот первая страница: http://pastebin.com/aLPYHPsF

Как вы можете видеть, я хочу получить пользовательский ввод, взять его и вывести в html.Текст работает нормально, но я не могу загрузить изображение!Я хочу, чтобы пользователь нажал кнопку «загрузить», получил подтверждение, затем нажмите «Отправить», и они были отправлены на сгенерированную страницу html (cfm).На странице есть уменьшенная версия загруженного ими изображения.Пожалуйста, скажите мне, что я делаю не так!Прямо сейчас, когда нажата кнопка «загрузить», форма просто сбрасывает.

Ответы [ 2 ]

3 голосов
/ 12 августа 2010

Это из-за того, что вы забыли присвоить 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>
1 голос
/ 12 августа 2010

Возможно, вы захотите использовать <cfdiv> для раздела загрузки изображений. По сути, вы хотите, чтобы форма для загрузки изображений находилась внутри <cfdiv>, чтобы форма отправлялась через ajax. Публикация действия формы изображения в файле previewImage.cfm, в котором используется <cffileupload>, проверьте с помощью isImageFile(), если это файл изображения, затем используйте <cfimage>, чтобы изменить его размер и отобразить миниатюру (может использовать action="writetobrowser"). Я полагаю, что самый простой способ связать загруженное изображение с родительской формой - сохранить путь к файлу в сеансе, если вы не хотите кодировать дополнительный Javascript.

...