node后台文件下载浏览器兼容处理

var tarpath='/opt/storage/test.mp4';
var title='测试下载.mp4';
if (fs.existsSync(tarpath)) {
                                    var stream = fs.createReadStream(tarpath);
                                    var userAgent = (req.headers['user-agent']||'').toLowerCase();

                                    if(userAgent.indexOf('msie') >= 0 || userAgent.indexOf('chrome') >= 0) {
                                        /*谷歌和IE浏览器下载*/
                                        res.writeHead(200, {
                                            'Content-Type': 'application/force-download;charset=utf-8',
                                            'Content-Disposition': 'attachment; filename='+encodeURIComponent(ret.title)+'.swp'
                                        });

                                    } else if(userAgent.indexOf('firefox') >= 0) {
                                        /*火狐浏览器下载*/
                                        res.writeHead(200, {
                                            'Content-Type': 'application/force-download;charset=utf-8',
                                            'Content-Disposition': 'attachment; filename*="utf8\'\'' + encodeURIComponent(title)+'"'
                                        });
                                    } else {
                                        /* safari等其他非主流浏览器只能自求多福了 */
                                        res.writeHead(200, {
                                            'Content-Type': 'application/force-download;charset=utf-8',
                                            'Content-Disposition': 'attachment; filename=' + new Buffer(title).toString('binary')
                                        });
                                    }

                                    stream.pipe(res);
                                    stream.on('end',function(){
                                     //下载成功后删除源文件
                                        fs.unlink(tarpath)
                                    });
                                }else{
                                    res.json({success:false,error:'file not exit'});
                                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值