Как обрабатывать конкретные ошибки в ColdFusion - PullRequest
1 голос
/ 22 февраля 2011

Я использую тег cffile с атрибутом accept.Если пользователь загружает тип MIME, отличный от того, что я разрешил, я хочу предотвратить его, но в то же время хочу иметь возможность обработать ошибку.Я попытался использовать блок try catch, но он все еще содержит ошибки.

<cftry>
  <cffile action="upload"
          filefield = "txtImg"
          accept="image/jpeg, image/png, image/bmp, image/gif, image/pjpeg, image/x-png"
          destination="E:\www2\website\Home\uploads\Images\"
          nameconflict="makeunique">
    <cfcatch>
        <script>
            $(function(){ 
                alert("Only the following file types are allowed: .jpg, .gif, .bmp, .png.");
            });
        </script>
    </cfcatch>
  </cftry>  

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Вы должны проанализировать сообщение cfcatch. Слегка измененная версия вашего кода может выглядеть так:

<cftry>

    <cffile action="upload"
        filefield = "txtImg"
        accept="image/jpeg, image/png, image/bmp, image/gif, image/pjpeg, image/x-png"
        destination="/tmp/"
        nameconflict="makeunique"/ >

    <cfcatch>

        <cfif FindNoCase("not accepted", cfcatch.Message)>
            <script>
                $(function(){
                    alert("Only the following file types are allowed: .jpg, .gif, .bmp, .png.");
                });
            </script>
            <cfabort />
        <cfelse>
            <!--- looks like non-MIME error, handle separately --->
            <cfdump var="#cfcatch#" abort />
        </cfif>

    </cfcatch>

</cftry>

Обратите внимание, что я не уверен в точном сообщении для неверного типа MIME для всех версий CF, поэтому я использовал поиск по блоку сообщений из ACF9, который выглядит следующим образом: The MIME type of the uploaded file application/octet-stream was not accepted by the server.

0 голосов
/ 28 сентября 2017

Вы также можете использовать:

<cfcatch>
    <cfif IsDefined("cfcatch.MimeType")>
        <!--- Do stuff --->
    </cfif>
</cfcatch>

Обычно при определении атрибута accept компонента <cffile> возникает пользовательская ошибка типа MimeType.

В качестве альтернативы вы можете использовать <cfcatch> только для MimeType ошибок.

<cfcatch type="MimeType">
    <!--- Do stuff --->
</cfcatch>
...