2

サーバー上にある XML ファイルへのリンクがあります。ユーザーがボタンをクリックすると、ダイアログを表示して XML ファイルをローカル ディスクに保存する必要があります。「a href」でXMLファイルへのリンクを確認したのですが、ブラウザはこのファイルを保存せずに開いてしまいました。「リンクを名前を付けて保存」すればOKです。この問題を解決するために私を助けてください。

更新: サーバー - IIS。XML ファイルは動的に作成されます。onClick イベントは、XML ファイルへの js リンクに送信し、ajax を使用して php への js POST リンクを送信します。XMLファイルを保存するために「保存ダイアログ」を開くようにphpを変更するにはどうすればよいですか?js:

 function funk(url)
    {
    var ajax = getRequest();
    ajax.onreadystatechange = function()
    {
        if(ajax.readyState == 4)
        {
         ...
        }
    }
    ajax.open("POST", "/do_query.php", true);
    ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    var data = 'info='+url;
    ajax.send(data);
    }

php (do_query.php):

<?php
  if (isset($_POST['info'])) 
  {
    $info = $_POST['info'];
  }
?>
4

2 に答える 2

7

XML ファイルは、HTTP ヘッダーとともに提供する必要がありますContent-Disposition: attachment。これにより、ブラウザはファイルを開く代わりにダウンロードするように指示されます。もちろん、Content-Typeヘッダーも適切に設定する必要があります (application/xmlは一般的な XML MIME タイプです)。HTTP ヘッダーを追加する方法は、サーバーの構成によって異なります。質問を編集して詳細を追加してください。

Apache.htaccessでは、

Header set Content-Disposition attachment

他のサーバーでは、異なります。

于 2013-04-08T14:59:16.533 に答える
0

最も簡単な方法は、リンク先のphpファイルを作成し、そのphpファイルに次のようなものを含めることです

<?php
header('Content-Type: application/xml;');
header('Content-Disposition: attachment; filename=blah.xml;');
readfile('blah.xml');

これにより、ファイルが強制的にダウンロードとして表示されます。

于 2013-04-08T15:01:02.753 に答える