Мне нужно использовать функцию FilegetMimeType()
, и я протестировал ее в программе под названием demomimetype.cfm
.
<cfoutput>
<cfset reploc = '#cookie.moxlog#'>
<cfset extrepoc = ExpandPath('#reploc#')>
<cfset typegif = FilegetMimeType('#extrepoc#/brightpink1.gif')>
typegif brightpink1.gif #typegif#<br>
</cfoutput>
Эта программа возвращает результат, что typegif равен "image / gif", что в точности верно. Когда я добавляю строки
<cfheader name = "Content-Disposition" value="attachment;#extrepoc#/logo106">
<cfcontent type="#typegif#" file="#extrepoc#/brightpink1.gif">
, я получаю такой результат:
Это то, на что я надеялся, хотя demomimetype.cfm
не то, что я решил открыть. Тем не менее, этот экран открывает brightpink1.gif
, так что я в порядке с ним.
Затем я попытался интегрировать это в мою реальную систему с помощью этой программы, что является результатом отправки в более ранней программе:
<cfoutput>
<cfset col = form.thecol>
<cfset colarray = getPageContext().getRequest().getParameterValues('xcol')>
<cfset origval = getPageContext().getRequest().getParameterValues('#col#')>
<cfset attname = origval[1]>
<cfset extreploc = ExpandPath("#cookie.moxlog#")>
<cfset typeatt = FilegetMimeType('#extreploc#/#attname#')>
</cfoutput>
Переменная «attname» будет «brightpink1.gif. При выводе typeatt я получаю« application / octet-stream », что неверно. И когда я добавляю строки
<cfheader name = "Content-Disposition" value="attachment;#extreploc#/#attname#">
<cfcontent type="#typeatt#" file="#extreploc#/#attname#">
Я получаю неправильный результат - не удивительно, потому что MIME-тип неправильный:
Очевидно, что демо работает правильно, а реальное приложение - нет. Я пыталсяпревращение имени файла в демо в переменную, и демонстрация продолжает работать. Я попытался сделать имя файла в приложении специфичным, но оно все еще не работает.
Я не хочу использовать«строгий» параметр, потому что некоторые файлы не имеют расширений, даже если они имеют определенный тип, такой как .jpg
.
Должна быть какая-то причина, по которой код в демоверсии работает и почти идентичный кодде в приложении нет. Но я не могу этого увидеть. Кто-нибудь может понять, что здесь происходит?