質問: ブラウザがファイル名を変更せずに、Web ブラウザからユーザーのマシンにファイルをダウンロードすることは可能ですか?
背景: 私はシェアウェア アプリを持っており、ユーザーはライセンスを購入してアクティブ化することができます。ライセンスは XML ファイルですが、拡張子は「.xml」ではなく「.mlic」です。mlic は、アプリが認識する特別なファイル拡張子です。ユーザーが支払うと、mlic ファイルと関連する HTTP ヘッダーをプッシュする PHP スクリプトにリダイレクトされます。私のスクリプトは以下です。
問題: ファイルが license.xml または license.mlic.xml としてダウンロードされ、このファイルをどうすればよいかわからないという人がいます。これらの人々が使用しているブラウザや OS はわかりません。再現できません。私のアプリは Mac のみなので、これは OS X に関係します。
解決策: これについて何かできることはありますか? ファイル拡張子を明示的に指定する HTTP ヘッダーはありますか?
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"license.mlic\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $filesize($input_path));
ob_end_flush();
@readfile($input_path);