2012-02-16 10 views
0

に設定すると、サーバーからファイルをダウンロードするアプリケーションがあります。ダウンロード後、レスポンスヘッダから来ているファイル名パラメータを使用するため、保存する必要があります。ヘッダー内のファイル名をhtaccess

私はstandart PHP download.php?id=downloadIDを使用していますが、問題なくヘッダーを設定できます。

これで、クライアントサーバー上でPHPが利用できないということがありました。 レスポンスヘッダーの内部にファイル名を設定する必要があります。ここ

は私が持っているもののhtaccessです:

<FilesMatch "\.(?i:pdf)$"> 
    Header set Content-Type: application/octet-stream 
    Header set Content-Disposition: "attachment; filename=FILE_NAME.pdf" 
</FilesMatch> 

と私はhtaccessファイルを使用してヘッダにdynamicalyファイル名をparceする方法は考えています。 私はそれを探してGoogleを持っていますが、まだ解決策はありません。

提案がありますか?

答えて

1

動作するかどうかはわかりませんが、これが私の最初の試みです。

RewriteRule [^/]\.pdf$ - [E=FILENAME:$0] 
<FilesMatch "\.(?i:pdf)$"> 
    Header set Content-Type application/octet-stream 
    Header set Content-Disposition "attachment; filename=%{FILENAME}e" 
</FilesMatch> 

EDITは、コードが箱から出して動作しない上、いくつかのApacheはREDIRECT_

RewriteRule [^/]+\.pdf$ - [E=FILENAME:$0] 
Header set Content-Type application/octet-stream env=REDIRECT_FILENAME 
Header set Content-Disposition "attachment; filename=%{REDIRECT_FILENAME}e" env=REDIRECT_FILENAME 

でENV変数の接頭辞インストールようです。私の場合、別の内部リダイレクトが必要でした。

しかし、リクエストURLにもファイル名が含まれていると、ヘッダーにファイル名を設定する必要がありますか?すべてのブラウザは、urlの名前でファイルを保存します。 /path/test.pdfになると、ファイル名test.pdfを示すブラウザが表示されます。

+0

'filename = FILE_NAME.pdf'の実際の結果は' FILE_NAME.pdf'です。 と 'filename =%{FILENAME} e'の結果は' null'です –

+0

上記の編集を参照してください。 – Gerben

+0

私は、ファイル名でサーバーを直接呼び出すと、名前を取得することができることを知っています...プロジェクトのいくつかの部分をアドビにする必要があるプロジェクトに「暴走フリーランサー」があるときだけです。コードについてどういうわけか私はそれがうまく動作しないように管理することができません。 –