ここや他の多くのサイト全体を検索しましたが、このようなよく知られている問題の解決策が見つかりません。PHP の readfile で Excel ファイルをダウンロードするプロンプトが表示されません。fopen、print(fread)、fclose の組み合わせも試しましたが、どちらも機能しません。リクエスト URL は https です。http のときにプロンプトが表示されました。
$path=$_SERVER['DOCUMENT_ROOT'].'/uploads/'.$legit;
header('Content-Description: File Transfer');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
header("Content-Disposition: attachment; filename='file.xls'");
header('Content-Type: application/vnd.ms-excel');
header('Content-Length: ' . filesize(\$path));
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Expires: 0');
ob_clean();
readfile($path);
exit;
/* IF ($file = FOPEN($path, 'rb')) {
WHILE(!FEOF($file) and (CONNECTION_STATUS()==0)) {
PRINT(FREAD($file, 1024*8));
FLUSH();
}
FCLOSE($file);
}
RETURN((CONNECTION_STATUS()==0) and !CONNECTION_ABORTED());
exit;
} */
リクエスト、レスポンス ヘッダーはすべて firebug で正常に表示されますが、プロンプトは表示されません。
私のクライアント ヘッダーは dojo/request API で送信されます。
var args={
headers :{
'Content-Type' :'application/x-www-form-urlencoded',
'Accept' :'application/vnd.ms-excel',
'X-Requested-With':'XMLHttpRequest'
},
method:'GET',
timeout:10000
}
var deferred=request.get(url,args);//the url is https it worked with http
これを解決するための助けはありますか?