2

重複の可能性:
Chrome の悪意のあるファイルの警告を回避する

コード:

    /* 
     .... Code to authenticate to my mysql and verify that we are an legal user.
    */
    $type = mysql_result($AllResult, 0, 'file_type');
    $size = mysql_result($AllResult, 0, 'file_size');
    $name = mysql_result($AllResult, 0, 'file_name');
    $data = mysql_result($AllResult, 0, 'file_content');

    session_write_close();
    ob_clean();
    mysql_close();

    header("Content-Transfer-Encoding: binary");
    header("Content-type: $type");
    header("Content-length: $size");
    header("Content-Disposition: attachment;filename=$name");
    header("Content-Description: PHP Generated Data");
    echo "$data";

データベースの longblob からファイルをダウンロードしてユーザーのコンピューターに保存するための PHP コードを作成しました。このコードは、Opera と Firefox で完全に機能します。ただし、IE および google chrome では、プログラムに Microsoft SmartScreen ライセンスがない場合、「...名前... は一般的にダウンロードされておらず、コンピューターに損害を与える可能性があります」というダイアログが表示されます。

図:

ライセンスなしでどのように見えるか

でも; ヘッダーを変更できるかどうか、または「このファイルはコンピューターに損害を与える可能性があります。そのままにしておきますか?」[キープ] [破棄]

私が話しているダイアログの図: 捨てる・残す

更新: Content-Disposition にインラインと添付ファイルの両方を使用しようとしましたが、同じ結果になりました

4

1 に答える 1

0

少なくとも Chrome 側では、この通知を無効にする方法はありません。ダウンロードの拡張子が実行可能 (.exe、.dll など) であるため、「この種類のファイルはコンピュータに損害を与える可能性があります」というメッセージが表示されます。これはおそらく Microsoft にも当てはまります。Microsoft のシステムは、ファイルが「よくダウンロードされる」場合 (つまり、多くの人が同じファイルをダウンロードしているのを目にする場合) に文句を言うのをやめるということを私は知っています。この通知を回避できるヘッダーがあると、ユーザーにとって有害で​​す。

ダウンロード名に.txt、.htmlなどの実行可能でない拡張子が含まれていることを確認することで、これを完全に回避できます。

于 2012-09-27T15:18:40.020 に答える