私は、オフィス内の認証されたユーザーがクライアントのファイルをアップロードし、ファイルをダウンロードするためのリンクのリストを作成し、リンクのリストをクライアントに電子メールで送信できるようにする、オフィス用のアプリケーションを作成しています。
オフィスのユーザーがログインすると、セッションスコープにUUIDが割り当てられます。そのUUIDは、アップロードされたファイルが保存されるディレクトリ名になります。
時々、古いファイルをクリアしてディレクトリを削除する必要がありますが、その場合、クライアントが古いリンクからファイルを再ダウンロードしようとする可能性があります。
ColdFusion 9では、これをどのようにキャッチしてエラーページに送信しますか?また、ダウンロードが開始されたら、同様のコードを使用してユーザーをリダイレクトし、ダウンロードプロセス中に空白のページに座っているだけではないようにしたいと考えています。
これが私の強制ダウンロードページで、ファイルを提供するためにフォルダー名変数とファイル名変数を取ります。
<cfset folder = #URL.folder#>
<cfset FileDownload = #URL.file#>
<cfset exten = ListLast(FileDownload, ".")>
<cfswitch expression="#exten#">
<cfcase value="zip"><cfset content_type = "application/zip, application/x-zip, application/x-zip-compressed, application/octet-stream, application/x-compress, application/x-compressed, multipart/x-zip"></cfcase>
<cfcase value="ai"><cfset content_type = "application/illustrator"></cfcase>
<cfcase value="eps"><cfset content_type = "application/illustrator, application/octect-stream"></cfcase>
<cfcase value="pdf"><cfset content_type = "application/pdf, application/x-pdf, application/acrobat, applications/vnd.pdf, text/pdf, text/x-pdf"></cfcase>
<cfcase value="psd"><cfset content_type = "image/photoshop, image/x-photoshop, image/psd, application/photoshop"></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>
<cfset fileToGetSizeOf = expandPath("./#folder#/#FileDownload#") />
<cfoutput><cfheader name="content-disposition" value="attachment;filename=#FileDownload#"><cfheader name="content-length" value="#getFileInfo(fileToGetSizeOf ).size#" />
<cfcontent type="#content_type#" file="#ExpandPath("./#folder#")#/#FileDownload#" deletefile="#delete_file#"></cfoutput>