2016-11-01 5 views
1

私はここでファイルダウンローダを作っています。ダウンロードしたExcelファイルをダウンロードしていますが、ファイルを開くと以下のエラーが表示されます Excelはファイルを開くことができません。 、phpを使用してexcelファイルをダウンロードした後にエラーが発生します

value="My Tracker.xlsx" 

は、それはおそらく、実際にファイルをダウンロードしていない:ファイル形式やファイルの拡張子はworngそれは、ファイル名にスペースを使用するためには良い考えではありません

<?php 

    if (isset($_POST['file_name'])) { 

     $file_name = $_POST['file_name']; 

     header('Content-type: application/octet-stream'); 
     header('Content-Disposition: attachment; filename="'.$file_name.'"'); 
    readfile('mystery_folder/'.$file_name); 
    exit(); 
    } 

?> 

<form action="indexa.php" method="post" name="downloadform"> 

<input name="file_name" value="My Tracker.xlsx" size="50" type="text"> 
<input type="submit" value="Download"> 

</form> 
+0

は注意してください: 'file_nameに= .. /。 ./../ etc/passwd'は悪いです。 – Federkun

+0

私はそれを試みましたが、それでも同じ結果を返しました –

答えて

0

ここで何が起こっているか、有効ではありませんできることの欠如のためにf indしてください。ファイルの名前を変更しないでください。

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 

および追加:

+0

MyTracker.xlsxを試しましたが、同じ問題 –

+0

正しいファイル名(大文字と小文字は区別されます)は間違いありませんか?あなたのサーバーがXLSXファイルを提供することも絶対に確信していますか?私はこれについてはわかりませんが、XLSはウェブダウンロードに適したフォーマットです。ファイルを古いバージョンとして保存し、そのようにしなければならないかもしれません。 – durbnpoisn

+0

よく私は私のローカルホストでこれを試しています –

0

は、コンテンツタイプを変更してみ

header('Content-Transfer-Encoding: binary'); 

このサンプルでは、​​私の仕事:

$file = 'sample.xlsx'; 
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header('Content-Transfer-Encoding: binary'); 
readfile(sprintf('./%s', $file)); 
+0

私はこれを変更しましたが(アプリケーション/オクテットストリーム)、まだ同じ問題があります –

+0

編集を参照してください –

+0

ファイルを開いた後残念ですが、ファイル形式とファイル拡張子が無効であるというエラーが表示されます –

関連する問題