ColdFusion FilegetMimeType дает противоречивые результаты - PullRequest
4 голосов
/ 03 октября 2019

Мне нужно использовать функцию 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">

, я получаю такой результат:

Image of correct download

Это то, на что я надеялся, хотя 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-тип неправильный: Image of wrong result

Очевидно, что демо работает правильно, а реальное приложение - нет. Я пыталсяпревращение имени файла в демо в переменную, и демонстрация продолжает работать. Я попытался сделать имя файла в приложении специфичным, но оно все еще не работает.

Я не хочу использовать«строгий» параметр, потому что некоторые файлы не имеют расширений, даже если они имеют определенный тип, такой как .jpg.

Должна быть какая-то причина, по которой код в демоверсии работает и почти идентичный кодде в приложении нет. Но я не могу этого увидеть. Кто-нибудь может понять, что здесь происходит?

...