cfcontent добавляет неправильное расширение файла при принудительной загрузке файлов .EPS и .AI - PullRequest
1 голос
/ 06 апреля 2011

Недавно я создал принудительную загрузку для сайта клиента, и все хорошо работает с обычными подозреваемыми, такими как .jpg, .png, .tif и даже .pdf.

Но когда я обслуживаюФайл Adobe Illustrator или eps, при загрузке он получает добавленное расширение.

Я уверен, что знаю, откуда возникла проблема, но не знаю, как ее обойти.В моем коде мой тег <cfcontent> назначает type="application/postscript" файлу .eps и .ai, потому что это типы MIME, основанные на списке в W3shcools: Типы MIME

IsЕсть какой-нибудь способ заставить тип MIME, скажем, type="application/ai" в среде общего хостинга?Или есть ли способ для меня получить список сопоставлений типов MIME с тегом или чем-то еще, чтобы я мог увидеть, есть ли для меня более подходящий тип MIME?

Вот мой код принудительной загрузки:

<cfset FileDownload = #URL.file#>
<cfset exten = ListLast(FileDownload, ".")>
<cfswitch expression="#exten#">
  <cfcase value="ai"><cfset content_type = "application/postscript"></cfcase>
  <cfcase value="eps"><cfset content_type = "application/postscript"></cfcase>
  <cfcase value="pdf"><cfset content_type = "application/pdf"></cfcase>
  <cfcase value="jpg"><cfset content_type = "image/jpeg"></cfcase>
  <cfcase value="png"><cfset content_type = "image/png"></cfcase>
  <cfcase value="tif"><cfset content_type = "image/tiff"></cfcase>
  <cfdefaultcase><cfset content_type = "image/jpeg"></cfdefaultcase>
</cfswitch>
<cfheader name="content-disposition" value="attachment;filename=#FileDownload#">
<cfcontent type="#content_type#" file="#ExpandPath("./#folder#")#/#FileDownload#" deletefile="no">

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

Можно вместо этого изменить content_type на application/octect-stream для расширений ai и eps и позволить браузеру определить ассоциацию программы на стороне клиента.Октет-поток может использоваться для любого двоичного типа файла.

1 голос
/ 06 апреля 2011

Вы пробовали это:

<cfcase value="ai"><cfset content_type = "application/ai"></cfcase>
...