0

サーバー上に生成された xls ファイルがあり、クライアントにプッシュしてダウンロードしたいのですが、うまく動作しないようです。これが私がこれまでに持っているものです:

$xlsFile = 'test.xls';

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=$xlsFile"); 
header("Content-Transfer-Encoding: binary ");  
exit();

私の Excel ファイルは正しく、サーバーから開くと開くことができますが、このファイルをクライアントにプッシュしてダウンロードするにはどうすればよいですか?

4

4 に答える 4

3

「Content-type」ヘッダーでやり過ぎているようです。exit()ああ、実際にing する前にファイルを送信する必要があります。あなたに必要なのは

header("Content-Type: application/vnd.ms-excel");
header('Content-Disposition: attachment; filename="' . $xlsFile . '"');
readfile($xlsFile);
exit();
于 2012-06-26T15:37:30.703 に答える
0

アップロードで送信する正しい MIME タイプについては、次の古い投稿を参照してください。

Excel ドキュメントの MIME タイプの設定

于 2012-06-26T15:37:07.280 に答える
0

サンプル関数。

function file_download($filename, $mimetype='application/octet-stream') {
  if (file_exists($filename)) {
// send headers
    header($_SERVER["SERVER_PROTOCOL"] . ' 200 OK');
// type
    header('Content-Type: ' . $mimetype);
// date of modified       
    header('Last-Modified: ' . gmdate('r', filemtime($filename)));
    header('ETag: ' . sprintf('%x-%x-%x', fileinode($filename), filesize($filename), filemtime($filename)));
// file size
    header('Content-Length: ' . (filesize($filename)));
    header('Connection: close');
    header('Content-Disposition: attachment; filename="' . basename($filename) . '";');
// send file
    echo file_get_contents($filename);
  } else {
    header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
    header('Status: 404 Not Found');
  }
  exit;
}
于 2012-06-26T15:39:25.557 に答える
0

もう1行追加するだけです

$xlsFile = 'test.xls';

header("Content-Type: application/vnd.ms-excelapplication/vnd.ms-excel");
header("Content-Disposition: attachment;filename='$xlsFile'"); 
header("Content-Transfer-Encoding: binary ");  
echo file_get_contents($xlsFile);
exit();
于 2012-06-26T15:38:22.047 に答える