情况是页面点击下载文件,ajax 请求后台,判断用户是否登陆,积分是否足够, 然后,给出要下载的 url 地址,下载文件。可以 我想要的是如果都能满足情况,在 ajax 里就能去下载这个文件,但实际情况是不可以这样的。诸君支招 - V2EX
l1905
V2EX    PHP

情况是页面点击下载文件,ajax 请求后台,判断用户是否登陆,积分是否足够, 然后,给出要下载的 url 地址,下载文件。可以 我想要的是如果都能满足情况,在 ajax 里就能去下载这个文件,但实际情况是不可以这样的。诸君支招

  •  
  •   l1905 Sep 19, 2014 4242 views
    This topic created in 4253 days ago, the information mentioned may be changed or developed.
    9 replies    2014-09-19 23:45:32 +08:00
    skybr
        1
    skybr  
       Sep 19, 2014
    别想复杂了, 用隐藏的iframe不好么?

    权限通过动态页用x-sendfile传递文件让浏览器直接下载, 权限不通过子框架调用parent的Javascript报警告.
    qiayue
        2
    qiayue  
    PRO
       Sep 19, 2014
    你用新打开页面去做,判断完成之后下载,然后自动关闭新页面
    jsonline
        3
    jsonline  
       Sep 19, 2014
    Show me your code. jsbin.com
    l1905
        4
    l1905  
    OP
       Sep 19, 2014
    @jsonline http://jsbin.com/cuyojojasoju/4/edit 简单的把代码摘出来了
    l1905
        5
    l1905  
    OP
       Sep 19, 2014
    @qiayue 可业务需求是在当前页面用ajax实现
    jsonline
        6
    jsonline  
       Sep 19, 2014
    $('.downAttach').click(function(e) {
    $.get("http://run.jsbin.com/runner?m=activity&c=index&a=add_apply_attach&id=<?php echo $adata['id'];?>" )
    .always(function(msg) {

    location.href = 'http://baidu.com';
    alert('done!')


    });
    });
    jsonline
        7
    jsonline  
       Sep 19, 2014
    @l1905
    1 你没有在 jsbin.com 插入 jQuery
    2 代码我放到上面了,插入 jQuery 什么的自己搞定。
    vincenting
        8
    vincenting  
       Sep 19, 2014   1
    1. ajax 下载文件?不太懂,为何不判断权限,如果没有权限就不给出下载链接,如果有权限才给出下载链接
    2. 点击下载链接后再次验证权限,想到有如下做法[根据规模选择]:
    a. 生成一个一段时间(例如 10s)的 token 放在 redis 里面,然后跳转至下载链接;然后使用 nodejs 代理或者 lua 脚本结合 Nginx 的方式,查看token 是否有效,有效才开始下载。
    b. 静态云服务器应该都有类似的功能,生成一个一次性/临时有实效的下载地址,避免暴露真实地址。
    ryd994
        9
    ryd994  
       Sep 19, 2014   1
    再再简单,也就是ajax生成链接然后隐藏iframe下载。
    如果你想ajax直接返回内容,那服务端就会很麻烦,而且效率也低。
    先生成链接,下载交给静态服处理,动态这边效率要高得多。
    About     Help     Advertise     Blog     API     FAQ     Solana     3512 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 12:07 PVG 20:07 LAX 05:07 JFK 08:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86