利用window.open实现阻止图片下载
来源:互联网 发布:西安市行知中学 编辑:程序博客网 时间:2024/05/23 11:55
最近的项目有个需要是,在页面中有个链接,点击后在新页面打开一个图片,这本来是很容易的事情,但是问题在于公司的图片资源统一储存在一个服务器中的,而且返回的数据中设置了Content-Disposition: attachment; filename="xxx.jpg"头,服务器可能是在web服务器设置了这个头,或者是在应用服务器代码里设置的,下面利用php模拟这个过程,如果我这样写:<a href="xxx.php" target="_blank">xxx</a>,不设置Content-Disposition头的话,那可以实现打开一个图片的功能,但是如果设置了这个头,那浏览器就会下载这个图片,而服务器端的东西我是不能改的,所以这个头我是去不了的,所以我只能在前端做点手脚,下面的代码就是这hack的方法。
<!DOCTYPE html>
<html>
<body >
<a href="#" id="img" >img</a>
</body>
<script type="text/javascript">
document.getElementById("img").onclick=function(){
str='<!DOCTYPE html><html><body ><img src="img.php" /></body></html>';
var a=window.open("")
a.document.write(str);
};
</script>
</html>
我在新打开的窗口中创建一个图片,然后把src写成相应的地址,这时候即使返回的数据设置了content-disposition头,也可以实现打开图片的功能。
php代码
<?php
$filename = "2.jpg";
header('Content-Type:image/gif');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Length:'.filesize($filename));
readfile($filename);
?>
- 利用window.open实现阻止图片下载
- 无法阻止的window.open().....
- 无法阻止的window.open().....
- 利用AsyncTast实现图片下载
- 弹出窗口window.open被浏览器阻止
- window.open 被阻止的处理方法
- 利用window.open实现post方式的参数传递
- 利用window.open实现post方式的参数传递
- 利用 iframe 来实现打印和图片下载
- window.open 会被IE阻止的问题
- window.open 会被IE阻止的问题
- window.open打开新窗口,防止浏览器阻止弹窗解决办法
- 解决window.open 会被IE阻止的问题
- 解决window.open弹出的窗口被阻止情况
- window.open实现模式窗口
- window.open实现post提交
- window.open()实现打开窗口
- [ExtJS5学习笔记]第二十五节 利用window.open()函数实现ExtJS5的登陆页面跳转
- git快速入门(四)解析部分
- Java并发编程(6):Runnable和Thread实现多线程的区别(含代码)
- Teams(UVA 11609)
- hadoop dfsadmin -report failed
- Java并发编程(7):使用synchronized获取互斥锁的几点说明
- 利用window.open实现阻止图片下载
- 设置textfield placeholder属性 swift版
- 【Leetcode】82 Remove Duplicates from Sorted List II 【指针&链表】
- Java并发编程(8):多线程环境中安全使用集合API(含代码)
- CodeForces 615C
- Java并发编程(9):死锁(含代码)
- Java编程入门(2.1):基础Java应用程序
- hdu 1217
- 将 Mac OS X 系统的 C、C++ 编译器从默认的 Clang 切换到 GCC