2011-01-21 9 views
0

mod_rewriteを実行しているPHPスクリプトによって生成されたXMLフィードがあります。 IEはフィードを開いてもOKですが、ファイルをディスクに保存したり、Excelにインポートすることはできません。PHPで生成されたXMLはIEでダウンロードできません

私がURLにアクセスしようとしているファイルは次のようになります。

http://domain.com/download/export.xml 

これはダウンロードPHPスクリプトに書かれており、実際にXMLファイルではありませんます。

ヘッダーを次のように設定した後も、IEでファイルを保存することはできません。また、プレーンソースを表示することができないので、&のコピーをメモ帳にコピーすると、IEがXMLに行うさまざまなスタイリングの変更のために動作しません。

<?php 
header("Content-type: text/xml"); 
header('Content-Disposition: attachment; filename="QuoteExport_'.$quoteDate.'_'.$quoteSlot.'.xml"'); 

解決策を知っている人はいますか?ありがとう。

編集: これまでのおかげでありがとうございました。私はこれらのヘッダーの組み合わせを試して、私が望む結果をまだ得ていません。私が何を設定しても、IEはブラウザにインラインで表示し、ダウンロードするオプションはありません。保存機能もまだ動作しません。他のアイデアヘッダーを使用してXMLをファイルとして保存するIEを強制する方法はありますか?

Edit2:状態は今IEが開く/保存するオプションを与えていますが、保存しようとしているときに「このインターネットサイトを開くことができません」というポップアップがあります。それと同時に、公開オプションでは問題のないコンテンツが表示されます。

答えて

0

ヘッダーを変更するのに多くの時間を費やした後、私はやや異なったアプローチに行きました。私が彼らに何を設定していたとしても、それは私にとってはうまくいかないでしょう。

とにかく実装されたソリューションは です。クライアントがURL(http://my-domain.com/downloads/export.xml)にアクセスすると、PHPスクリプトは次の場所にある実際のXMLファイルを生成します。 request-URIをサーバーに保存し、将来の削除ジョブのスケジュールを設定してから、ブラウザーを効果的にリフレッシュします。次に、2番目の要求のモディリイレクトルールが実際のファイルを処理し、IEがファイルを正しく使用できるようになります。その後、将来の要求によってサイクルが再び実行されます。

物事を行う方法についてやや丸いですが、最も速い方法でした。また、アプリケーションの別の部分からファイル操作をスケジューリングして、クリーンアップの作業をはるかに簡単にすることができました。

とにかく助けてくれてありがとうございました。ヘッダーオプションについては、2つのことを学びました。

5

は、この例のように、特定のヘッダーを指定する必要がありますダウンロードしてIEと他のブラウザを強制するには、次の

header("Content-disposition: attachment; filename=\"".$fileName . ".csv\""); 
    header("Content-Type: application/force-download"); 
    header("Content-Transfer-Encoding: binary"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 

その他のテキスト/ XMLを使用した場合、すなわち、彼はそれを表示する方法を知っているし、そう考えて賢いです。

2

IEの一部のバージョンでセッションパラメータを設定する必要があります。あなたは$my_file_name$my_file_contentsセットを持っていると仮定すると、ここではそれがどのように見えるかです:

if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')) { 
    session_cache_limiter("public"); 
} 
session_start(); 

header('Content-type: application/octet-stream'); 
header('Content-Disposition: attachment; filename=".' $my_file_name '. "'); 
print($my_file_contents); 

this articleから適応)

0

アプリケーション/ xmlまたはapplication /強制ダウンロードするコンテンツタイプを設定してみてください

関連する問題