2019-06-09 11:07:48 1757次浏览 2条回答 0 悬赏 20 金钱

当我使用 sendfile() 发送文件时发现,如果我后面跟的有:

return $this->render('...');

之类的语句,类似下面情形:

yii::$app->response->sendfile($filepath);
$this->render('index');

执行的时候是不会报错的,但是不等文件发送完成就直接跳到 index 页面了,想问下有什么办法能够等到文件下载完成之后再跳转,或者跳转的同时不影响文件的下载?
谢谢!

最佳答案

  • 发布于 2019-06-09 17:16 举报

    1、下载完成后跳转
    可以使用 ajax 接收下载文件(这时候你需要自己处理文件的保存),这时候你是可以获得 下载完成 这个事件的,在这个事件的处理函数中 location.href 就可以了。

    2、跳转的同时不影响文件的下载
    因为下载文件并不会使浏览器跳转,所以 下载文件的同时 是可以执行 js 的,示例代码如下:

    html:

    <a href="xxx.exe" data-delayed-href="xxx.html">
    

    js:

    $('a[data-delayed-href]').click(function() {
        window.open($(this).data('delayed-href'), '_blank');
    });
    

    总之,这是个 客户端的问题,与服务端的关系 并不大。

    1 条回复
    回复于 2019-06-09 20:20 回复

    谢了,看来要学点前端的技术了。。。

您需要登录后才可以回答。登录 | 立即注册
sk811229
经理

sk811229

注册时间:2018-05-23
最后登录:2022-10-06
在线时长:16小时47分
  • 粉丝0
  • 金钱770
  • 威望10
  • 积分1030

热门问题