4

OK、これと同じように完全に重複した質問がありましたが、2年経ちましたが、実際には解決策ではなかった回答が1つしかありません.

だから、画像(サムネイル)があり、そのすぐ下に2つのボタンがあります:ViewDownload.

ビューはブラウザで画像を開きます(キャッシュされています)。[ダウンロード] ボタンをクリックすると、[画像の保存] ダイアログが開きます。

Content-Disposition: attachment;現在、ダウンロード ボタンにPHP のヘッダーを使用しています。

一般的に、訪問者は最初にViewボタンを押してプレビューします (詳細と品質を確認する必要があるため、サムネイルは解決策ではありません)。特に私自身のアプリの場合はそうです。

時間がかかるので、ファイルを PHP で再度読み取る必要はありません。また、ユーザー エクスペリエンスを向上させるために、「画像を右クリック -> 画像を名前を付けて保存」をシミュレートして、ダウンロード ダイアログがポップアップし、訪問者が 1 回のクリックでダウンロードできるようにすることはできますか?

4

4 に答える 4

0

いいえ、できません。現在行っているように、新しいリクエストを発行し、http ヘッダーを使用してダウンロードを強制する必要があります。

于 2012-11-29T02:24:32.483 に答える
0

ドキュメント オブジェクトの技術仕様によると、JavaScript を使用してドキュメント/ファイル/リソースを強制的にダウンロードできる方法はありません。

于 2014-10-14T03:14:04.480 に答える
-1

oncontextmenuこのアイデアのようなイベントを使用してみてください:

HTML:

<div id="image">
YOUR IMAGE
</div>

<div id="contextmenu" style="display: none">
<ul>
    <li>YOUR LINK TO DOWNLOAD IMAGE</li>
</ul>
</div>​

jQuery を使用したスクリプト:

var img = document.getElementById("image");
img.oncontextmenu = function(e){
    e.preventDefault();

    contextmenu = $("#contextmenu");
    contextmenu.css("top",(e.pageY) + "px")
        .css("z-index","9999")
        .css("left",(e.pageX) + "px");

    contextmenu.fadeIn('fast');    
    return false;
};

$("#image").click(function(){
    $("#contextmenu").hide();
});

CSS:

#image {
    width: 300px;
    height: 300px;
    background: rgba(0, 0, 0, 0.2);
}
#contextmenu{
    position:fixed;
    background: white;
}

また、デモhttp://jsfiddle.net/aanred/75xaU/用にここでフィドルを作成します。それが役に立てば幸い。

于 2012-11-29T02:35:06.587 に答える
-1

これを試して

<a href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA......" download="save-name.jpg">Click me to download the img</a>
于 2013-09-11T01:58:22.140 に答える