强制浏览器单击下载图像文件

2022-08-30 04:27:28

我需要浏览器下载图像文件,就像点击Excel工作表一样。

有没有办法仅使用客户端编程来执行此操作?

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="Scripts/jquery-1.10.2.js">
        $(document).ready(function () {
            $("*").click(function () {
                $("p").hide();
            });
        });
        </script>
    </head>

    <script type="text/javascript">
        document.onclick = function (e) {
            e = e || window.event;
            var element = e.target || e.srcElement;
            if (element.innerHTML == "Image") {
                //someFunction(element.href);
                var name = element.nameProp;
                var address = element.href;
                saveImageAs1(element.nameProp, element.href);
                return false; // Prevent default action and stop event propagation
            }
            else
                return true;
        };

        function saveImageAs1(name, adress) {
            if (confirm('you wanna save this image?')) {
                window.win = open(adress);
                //response.redirect("~/testpage.html");
                setTimeout('win.document.execCommand("SaveAs")', 100);
                setTimeout('win.close()', 500);
            }
        }
    </script>

    <body>
        <form id="form1" runat="server">
            <div>
                <p>
                    <a href="http://localhost:55298/SaveImage/demo/Sample2.xlsx" target="_blank">Excel</a><br />
                    <a href="http://localhost:55298/SaveImage/demo/abc.jpg" id="abc">Image</a>
                </p>
            </div>
        </form>
    </body>
</html>

在下载Excel工作表的情况下,它应该如何工作(浏览器做什么)?


答案 1

使用HTML5,您可以将属性“下载”添加到链接中。

<a href="/path/to/image.png" download>

然后,兼容的浏览器将提示下载具有相同文件名的图像(在此示例图像中.png)。

如果为此属性指定一个值,则该值将成为新的文件名:

<a href="/path/to/image.png" download="AwesomeImage.png">

更新:自2018年春季起,对于跨源hrefs来说,这不再可能。因此,如果您想在 imgur.com 域以外的域上进行创建,则它不会按预期工作。Chrome 弃用和移除公告<a href="https://i.imgur.com/IskAzqA.jpg" download>


答案 2

我设法通过在到文档的链接中附加一个链接,在Chrome和Firefox中也得到了它。

var link = document.createElement('a');
link.href = 'images.jpg';
link.download = 'Download.jpg';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);