1

質問: ブラウザがファイル名を変更せずに、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);
4

2 に答える 2

0

ファイル拡張子を明示的に指定する http ヘッダーがあります。そのためには、コンテンツ タイプを、たとえば、pdf ファイルの場合は「application/pdf」、Excel ファイルの場合は「application/ms-excel」に設定する必要があります。

于 2013-07-15T06:27:19.930 に答える
0

1) Content-Transfer-Encoding や Content-Description などの不要な/未定義のヘッダー フィールドを削除します。

2) いいえ、ブラウザが検出したコンテンツ タイプに基づいて拡張子を調整するのを防ぐことはできません。

于 2013-05-25T06:51:35.587 に答える