3

ユーザーのブラウザにファイルを強制的にダウンロードすることはできますか (もちろん、標準のダイアログ プロンプトを使用して)。サーバーによってトリガーされます。基本的に、サーバーファイルシステムからブラウザにファイルをプッシュすることを考えています。それとも、セキュリティサンドボックスが原因でこれは不可能ですか? これが不可能な場合、これに非常に近い別の方法はありますか? ユーザーの同意なしにファイルを送信したくありません。2 段階のアプローチを考えることができます。まず、ユーザーに受信データのプロンプトを表示し、ダウンロードをトリガーする [OK] ボタンをクリックさせますが、ダウンロードの終わり近くで、ユーザーは別の確認ボックス (開くように求める標準のダウンロード プロンプト) を取得します。または保存します)。ワンステップでできればいいですね。

4

3 に答える 3

3

それは間違いなく可能です。これがサーバーによってトリガーされると仮定すると、次のヘッダーを送信するだけです。

Location: http://www.foo.com/path/to/file

foo.comドメインはどこにあり、ファイルへのパスが含まれています。これにより、ユーザーがファイル リンクに移動し、結果として自動ダウンロードが行われます。

ここで、ブラウザーがコンテンツを表示する問題を回避するには、サーバー側のコードで次のContentようなヘッダー情報を発行する必要があります (例として PHP を使用)。

<?php
    header("Content-Type: application/octet-stream");
    header("Content-Length: " . filesize($file));   
    header('Content-Disposition: attachment; filename=' . $file); 
    readfile($file);
?>

うまくいけば、これは疑似コードとして十分に機能し、開始することができます。幸運を!

于 2012-08-08T14:49:26.447 に答える
3

5秒または10秒ごとにサーバーをポーリングするajax jsonスクリプトを使用します.通常のダウンロードとして。

どのように機能すると考えるべきかについて、少し例を示しました。私はバグをチェックしていませんが、それは概念の証明です。

jQuery の例 (json なし):

$.ajax('/myserverscript.php?fileready=needtoknow').done(function(data) 
    {
    if(data.indexOf("I have a file") != -1)
        {
        xdata = data.split('\n');
        data = xdata[1];
        document.getElementById('myiframe').location.href = data;
        }
    });

PHP コード

$x = filecheckingfunction();// returns false if none, returns url if there is a file
if($x !== false)
    {
    echo 'I have a file\n';
    echo $x;
    }
于 2012-08-08T14:50:08.840 に答える
0

ユーザーにプロンプ​​トを表示する必要があることはわかっているので、単純なハイパーリンクを使用してみてくださいtype="application/octet-stream"

"content-disposition: attachment"ヘッダーで: も使用できます。

于 2012-08-08T14:49:32.410 に答える