Несколько запоздало, но почему бы вам не захватить и не сохранить тип MIME при загрузке файла? <cffile>
возвращает его в cffile.contentType
и cffile.contentSubType
, так что это не совсем обременительно. Конечно, вам нужно будет выполнить проверку уже существующих файлов, но это легко запрограммировать.
FWIW, мой код загрузки файлов также отправляет размер файла и дату изменения, а также проверяет повторные запросы неизмененных файлов. Все это после проверки подлинности / авторизации, конечно:
<cfset modified=parsedatetime(queryname.datestamp)/>
<cfif structkeyexists(cgi, "http_if_modified_since")>
<cfif parsedatetime(cgi.http_if_modified_since) gt modified>
<cfheader statuscode=304 statustext="Not modified"/>
<cfabort/>
</cfif>
</cfif>
<cfheader name="Content-Disposition" value='disposition=#disposition#; filename="#queryname.filename#"'/>
<cfheader name="Content-Length" value=#queryname.size#/>
<cfheader name="Last-Modified" value=#gethttptimestring(modified)#/>
<cfcontent type=#queryname.mimetype# file="application.pathToDataDirectory/#queryname.filename#"/>