2017-01-25 8 views
-1

Я работаю над проектом, где пользователь должен иметь возможность щелкнуть ссылку и открыть файл excel. Мои файлы находятся в папке сервера, я использую функцию JavaScript onClick для открытия файлов excel. Этот способ открытия файлов очень небезопасен, потому что пользователь может видеть прямую ссылку на папку (если они открывают devTools). Я хотел бы использовать функцию ColdFusion, которая будет захватывать файлы из папки и передавать их пользователю. Мне было интересно, что лучший способ сделать это в ColdFusion? Есть ли и функции, которые непосредственно смотрят в папку и серверы файла? Вот мой текущий код:Как захватить файл из папки и показать пользователю? ColdFusion/JavaScript

<cfdirectory directory="#exportsDir#" action="list" filter="*.xls" recurse="no" name="fileList"> 

<cfoutput query="fileList"> 
    <cfset href = "../Reports/#fileList.name#"> 

    <div onClick="location.href = '#href#';">#fileList.name#</div> 
</cfoutput> 

Если у кого есть предложения по тому, как подойти к этой проблеме, пожалуйста, дайте мне знать. Спасибо!

+1

Что вы ищете, похоже на расположение контента: http://stackoverflow.com/questions/6835774/how-can-i-force-a-download-of-a-pdf-in-a- url –

+0

Вы также можете пойти на сервер и обязательно отключить просмотр каталогов. Это особенно удобно в IIS. – TRose

ответ

1

Чтобы избежать вывода пути к файлу, существует несколько способов сделать это.

URL переписывания

Одним из них является использование URL Rewriter. Например, в Apache вы можете включить его через mod_rewrite module. Это выглядит, то что-то вроде

RewriteEngine On 
RewriteBase "/files/" 
RewriteRule "^(.+)$" "../Reports/$1" [L] 

ColdFusion сценарий

Другой способ позволить ColdFusion сценарий служить файл, поэтому путь к ней скрывается за сценарий. См. How can I force a download of a pdf in a url?