首页 新闻 会员 周边 捐助

几秒后开始下载的实现原理是怎样的?

0
悬赏园豆:100 [待解决问题]
三聪的主页 三聪 | 初学一级 | 园豆:139
提问于:2012-10-30 13:50
< >
分享
所有回答(7)
0

疑问1:是的,这个页面的js会在几秒后调用下载文件的接口,一般用setTimeout来实现几秒后调用某个方法。

疑问2:没看懂。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-10-30 14:00
0

图片下载不能直接用链接,在后台读取图片再输出,并设置Response.ContentType = "application/octet-stream";就不会被直接打开

向往-SONG | 园豆:4853 (老鸟四级) | 2012-10-30 14:13
0

关于疑问1,我的意思和楼上一样

关于疑问2,你的意思是下载图片的时候,有时候浏览器会打开图片而不是下载图片,是么?

浏览器点击图片默认就是打开的,如果避免打开,那就要改变电脑的一个设置。具体怎么设置,如果你准备这么做,那咱再讨论。

另外一种就是图片做成压缩包的样子,就不会直接打开了

再一种就是在图片上点击另存为……

不知道有没有解答你的疑问?

ms_water | 园豆:510 (小虾三级) | 2012-10-30 14:14
0

http://a.fsdn.com/con/js/min/sf.dwnld.js?1351545125

应该是这个js文件在起作用,当然还有这段代码:

<script type="text/javascript">
SF.downloadDelay = 5000;
SF.downloadRedirectDelay = 60000;
SF.ios = false;
</script>

chenping2008 | 园豆:9836 (大侠五级) | 2012-10-30 14:47
0

第一个很容易, 最简单的, settimeout, 改location或者弄一个iframe改location试试(这个我没试过, 应该没问题)。

第二个, 改图片的mime type, 让他不是图片, 而是二进制文件就可以了。 

undefined | 园豆:898 (小虾三级) | 2012-10-30 19:05
0

下载前Thread.sleep(3000);//3秒

何以解忧唯有撸码 | 园豆:39 (初学一级) | 2012-11-02 10:16
0

实现很简单,首先是下载文件的链接地址需要通过服务端控制,按二楼的哥们说的那样就行Response.ContentType = "application/octet-stream"; 确保浏览器不会直接打开图片。然后加以下代码就能搞定这个问题:

$(function() {
  var interval=3000;//这里设置你想Delay的时间
  setTimeout(function() {
      window.open("你的图片文件的下载地址");
     },interval);
}
Ray Liang | 园豆:426 (菜鸟二级) | 2014-07-27 14:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册