php,或js如何实现点击图片另存为
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php,或js如何实现点击图片另存为相关的知识,希望对你有一定的参考价值。
点击图片,就直接下载,而不是在浏览器中打开
JS:
使用JS实现单击连接保存图片2种形式都可以第一种:
<script>
function SaveAs5(imgURL)
var oPop = window.open(imgURL,"","width=1, height=1, top=5000,
left=5000");
for(; oPop.document.readyState != "complete"; )
if (oPop.document.readyState == "complete")break;
oPop.document.execCommand("SaveAs"); oPop.close();
</script>
<img src="t_screenshot_17616.jpg" id="DemoImg" border="0"
onclick="SaveAs5(this.src)">
第二种:
<script> function SaveAs5(imgURL)
var oPop = window.open(imgURL,"","width=1, height=1, top=5000,
left=5000");
for(; oPop.document.readyState != "complete"; )
if (oPop.document.readyState == "complete")break;
oPop.document.execCommand("SaveAs"); oPop.close();
</script>
<img src="../t_screenshot_17616.jpg" id="DemoImg" border="0">
<a href="#" onclick="SaveAs5(document.getElementByIdx_x('DemoImg').src)">
点击这里下载图片 </a>
php:
<a href="test.php?url=uploads/1112/1-11122212201R28.jpg">下载</a>
test.php文件代码:
<?php
$dir=$_GET['url']; //获取图片地址$file = fopen($dir,"r"); // 打开文件
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($dir));
Header("Content-Disposition: attachment; filename=" . $dir);
echo fread($file,filesize($dir));
fclose($file);
exit;
?>
参考技术A 在html中的图片,不用其他设置,右键点击图片就可以另存的。 参考技术B 用PHP可以。
可以在<img>中写个链接,连接到一个下载图片的PHP。追问
php怎么写
追答";
echo "";
echo "";
?>
function SaveAs5(imgURL)
var oPop = window.open(imgURL,"","width=1, height=1, top=5000, left=5000");
for(; oPop.document.readyState != "complete"; )
if (oPop.document.readyState == "complete")break;
oPop.document.execCommand("SaveAs"); oPop.close();
</script>
<img src="t_screenshot_17616.jpg" id="DemoImg" border="0" onclick="SaveAs5(this.src)">
前端如何实现下载另存为
前端引入
// 放在外部工具类中方便提取
export function downloadFile(obj, name, suffix) {
const url = window.URL.createObjectURL(new Blob([obj]))
const fileName = parseTime(new Date()) + \'-\' + name + \'.\' + suffix
if (\'download\' in document.createElement(\'a\')) {
// 支持a标签download的浏览器
const link = document.createElement(\'a\') // 创建a标签
link.download = fileName // a标签添加属性
link.style.display = \'none\'
link.href = url
document.body.appendChild(link)
link.click() // 执行下载
URL.revokeObjectURL(link.href) // 释放url
document.body.removeChild(link) // 释放标签
} else {
// 其他浏览器
navigator.msSaveBlob(new Blob([obj]), fileName)
}
}
后端
@Override
public void download(List<GroupDto> queryAll, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (GroupDto groupDto : queryAll) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("组名", groupDto.getName());
map.put("创建时间", groupDto.getCreatedAt());
map.put("更新时间", groupDto.getUpdatedAt());
list.add(map);
}
FileUtil.downloadExcel(list, response);
}
// 工具类
public static void downloadExcel(List<Map<String, Object>> list, HttpServletResponse response) throws IOException {
String tempPath = SYS_TEM_DIR + IdUtil.fastSimpleUUID() + ".xlsx";
File file = new File(tempPath);
BigExcelWriter writer = ExcelUtil.getBigWriter(file);
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(list, true);
SXSSFSheet sheet = (SXSSFSheet)writer.getSheet();
//上面需要强转SXSSFSheet 不然没有trackAllColumnsForAutoSizing方法
sheet.trackAllColumnsForAutoSizing();
//列宽自适应
writer.autoSizeColumnAll();
//response为HttpServletResponse对象
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition", "attachment;filename=file.xlsx");
ServletOutputStream out = response.getOutputStream();
// 终止后删除临时文件
file.deleteOnExit();
writer.flush(out, true);
//此处记得关闭输出Servlet流
IoUtil.close(out);
}
火狐浏览器下载时如何关闭提示如何处理文件
进去首先项配置
path:进入about:config
输入save查询当前首先响配置 添加一个配置信息
browser.helperApps.neverAsk.saveToDisk
application/octet-stream 请求类型
在火狐设置里面打开总是询问,即可每次提示保存位置
以上是关于php,或js如何实现点击图片另存为的主要内容,如果未能解决你的问题,请参考以下文章