javascript - 图片另存为没有后缀名的问题
PHPz
PHPz 2017-04-11 11:02:58
[JavaScript讨论组]

例如有这么一个图片http://wx.hdmoping.com/Showqrcode/ad90b,在浏览器上另存为时,就会默认以ad90b来命名,没有后缀名,导致存下来的图片打不开。

如何让<img src="http://wx.hdmoping.com/Showqrcode/ad90b">在用户另存为时加上后缀?

PHPz
PHPz

学习是最好的投资!

全部回复(3)
怪我咯

如樓上講的,用右鍵另存是作不到這個的,
< a > 在 HTML5 有個 download 属性
照理講

<a id="link" download="test.jpg" href="http://wx.hdmoping.com/Showqrcode/ad90b"> 
    <img src="http://wx.hdmoping.com/Showqrcode/ad90b" />
</a>

就可以了, 不過你伺服器的圖片有指定 HTTP header Content-Disposition ,他優先權較高
所以下面用 cavas 將網址轉成 base64 來避開它

<a id="link" download="test.jpg" href="#"> 
    <canvas id="myCanvas"></canvas>
</a>
function convertImageToBase64(image_url) {
    var img = new Image();
    img.onload = function(){
        if (img.src.indexOf("data:image")<0){
          var canvas = document.getElementById("myCanvas");
          canvas.width = img.width;
          canvas.height = img.height;
          canvas.getContext("2d").drawImage(img, 0, 0);
          img.src = canvas.toDataURL('image/png');
          document.getElementById("link").href = img.src;
        }
    };
    // 跨域
    img.crossOrigin = "Anonymous";
    img.src = image_url;
}
convertImageToBase64('https://static.orderplus.com.tw/img/portraits/15.jpg');

示例: https://jsfiddle.net/cwen0708/gcw9cjLq/

大家讲道理

在浏览器中直接点击右键进行另存是做不到你这个需求的。因为浏览器另存图片的时候是直接根据这个图片url的最后一部分来命名的。
所以 http://wx.hdmoping.com/Showqrcode/ad90b 这个图片另存时名称为 ad90b

解决方案是提供一个下载按钮,让server指定文件名。

阿神

在电脑设置里面显示后缀

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号