2014-02-20 2 views
4

Этот код используется для работы хорошо с ColdFusion 9:ColdFusion 10 cffile действие = «загрузить» принимать атрибут подстановочные не работают

<cfif form.btnSaveImage EQ "Upload"> 
    <cftry> 
     <cffile accept="image/*" action="upload" destination="C:\T" filefield="vcImageFile" nameconflict="overwrite"> 
     <cfcatch type="Any"> 
      <cfdump var="#cfcatch#" label="cfcatch"> 
     </cfcatch> 
    </cftry> 
</cfif> 

<form action="<cfoutput>#cgi.SCRIPT_NAME#</cfoutput>" method="post" name="frmImagesAdd" id="frmImagesAdd" enctype="multipart/form-data"> 
    <label for="vcImageFile">Image File*:</label><br> 
    <input type="file" name="vcImageFile" id="vcImageFile" size="40" maxlength="255" message="Image file is required to upload."><br> 
    <input type="hidden" name="btnSubmit" value="Add Image"> 
    <input name="btnSaveImage" type="submit" value="Upload"> 
</form> 

вопрос является accept="image/*" атрибутом cffile тега. В ColdFusion 9 этот шаблон используется для приема любого файла с типом MIME, который начинается с «image /». В ColdFusion 10, я получаю следующее сообщение об ошибке:

«Тип MIME или расширение загруженного файла изображения JPEG/был не принимается сервером.»

Значение MimeType - «image/jpeg», поэтому оно должно работать с подстановочным знаком.

Я смотрел на wikidocs for the cffile tag и говорит, что это:

ColdFusion 10: Изменения в атрибуте принимают}}

Однако он не уточнил, что эти модификации!

Глядя на upload action docs, в нем говорится, что он будет использовать список типов mime с разделителями-запятыми. Означает ли это, что подстановочные знаки больше не принимаются?

+1

(Изменить) Что произойдет, если вы используете ['strict = false'] (http://www.sagarganatra.com/2012/03/coldfusion-10-cffile-restricting-file.html)? Не ответ на ваш вопрос, но вы можете прочитать это: [Безопасная загрузка файлов/Не полагайтесь на атрибут accept cffile] (http://www.petefreitag.com/item/701.cfm). Не уверен, что все еще применяется в CF 10, просто FYI ... – Leigh

+0

Я лично указал каждый тип изображения, который я хочу принять следующим образом: image/jpeg, image/pjpeg, image/png, image/gif. По-моему, лучше сделать это так, как использовать подстановочный знак. –

+1

@ volumeone - Я не знаю, изменился ли CF10, но в более ранних версиях метод «accept» был легко взломан, поэтому вы не должны полагаться на него в любом случае. См. Ссылку выше. – Leigh

ответ

1

FYI, это сообщение в блоге указал ту же проблему то же время в прошлом году:

http://www.cutterscrossing.com/index.cfm/2013/2/21/ColdFusion-10-File-Uploads-and-MIME-Types

Теперь я вспомнил, что произошли изменения в проверке MIME типа в CF 10, но я не был Совершенно верно. Этот код, написанный одним из наших разработчиков несколько месяцев назад, позволит использовать любой «образ» MIME-типа. Что мы обнаружили, так это то, что мы не могли сделать это подстановочное обозначение под CF 10, и теперь нам нужно было перечислить каждый принятый MIME как список с разделителями-запятыми.

Смежные вопросы