php-ファイルダウンロードボックス
-
08-07-2019 - |
質問
ユーザーにcsvファイルをダウンロードするためのリンクを提供しています...ただ使用して
Click <a href="report.csv">here</a> to download your file.
このテキストとリンクは小さなポップアップウィンドウに表示されています-高さ100幅400。
ユーザーが[保存]をクリックすると、 -問題ない場合、ファイルは選択した場所に保存されます
「開く」を選択してもその後、csvファイルが小さなポップアップウィンドウに表示されます。それは私が望むものではありません-ファイルを開いてExcelで表示したり、「開く」を無効にしたりすることを好むでしょうボタンは可能なオプションかもしれません。
どのように達成することができますか?
ありがとう、
解決
JavaScriptを使用してポップアップボックスを開いていると仮定します..小さな「ダウンロード」を表示/開かないことをお勧めします。ポップアップボックスを使用し、代わりにこのリンクをウェブページに表示します。そのため、誰かがリンクをクリックすると、ブラウザにファイルをダウンロードさせ、それを開きたい場合は、ブラウザのウィンドウサイズと同じ幅のビューを取得できます。
//たとえば、zipファイルを強制的にダウンロードするには、ヘッダーを次のように送信します
// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
他のヒント
どのファイルタイプがどのアプリケーションによって開かれるかなど、ユーザーの設定に対する権限はありません。設定に移動して、ファイルの関連付けを変更する必要があります。ただし、すべての人がExcelをインストールしているわけではないことに注意してください。この特定のアプリケーションでユーザーにcsvファイルを開かせることはお勧めできません。
また、[開く]オプションを無効にできるとは思いません。これは、ウィンドウを表示するかどうか、または関連アプリケーションを直接起動するかどうかなど、Webブラウザーの構成によっても決まります。特定のケースで運が悪くなります。
これはOSレベルであり、変更できないと思います。
半分の解決策は、タグに target =&quot; _blank&quot;
を追加することです。これにより、ユーザーが「開く」オプションを選択すると、少なくともファイルが新しい(フルスクリーン、または少なくともサイズ変更可能な)ウィンドウで開かれます。
それ以外は、ceejayozが述べたように、ウィンドウの動作を変更することはできません。
- この時点までに他の出力を行わないようにしてください
- csv文字列を作成し、$ csvStringに保存します
- $ csv_filenameに適切なファイル名を付けます
-
ヘッダーは、ブラウザにExcelで読み込むように指示する必要があります
header(&quot; Cache-Control:maxage = 1&quot;);
header(&quot; Pragma:public&quot;);
header(&quot; Content-Type:application / vnd.ms-excel&quot;);
header(&quot; Expires:0&quot;);
header(&quot; Cache-Control:must-revalidate、post-check = 0、pre-check = 0&quot;);
header(&quot; content-disposition:attachment; filename = $ csv_filename&quot;);
echo $ csvString;