我的页面上有一个动态生成的图像,如下所示:
<img id="my_image" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEA/gD+AAD/etc............" />
我不想告诉我的用户右键单击图像并点击保存,而是想公开一个下载链接,单击该链接将提示下载图像。如何实现这一目标?
最初我在 js 中尝试这样做:
var path = $('#my_image').attr('src');
window.open('./download.php?file=' + path);
并在 download.php 中:
<?php
header('Content-Description: File Transfer');
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename= " . $_GET['file'] . "");
?>
<img src="<?= $_GET['file'] ?>" />
但问题是,Base64 url 字符串太大,超出了 GET 请求字节限制。
我愿意接受 JavaScript 或 PHP 的解决方案。
在 download.php 中尝试一下:
<?php
header('Content-Description: File Transfer');
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename= Image.jpg");
exit(base64_decode($_POST['data'])); //url length is limited, use post instead
?>
并将其用于表单:
<form method="post" action="./download.php">
<input type="hidden" name="data" value="/9j/4AAQSkZJRgABAgEA/gD+AAD/etc............" />
<a href="#" onclick="this.parentNode.submit();return false;">Download</a>
</form>
就像 Dagon 所说,这不是最好的方法,因为提交表单就像上传整个图像一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)