koa 文件下载
2015-09-16 13:26
363 查看
项目地址:https://github.com/zfeig/koa-mvc.git
接着前面一片文章“koa文件上传”,现在要实现koa文件下载了,打算通过浏览器列出文件列表,通过get方法传递文件相关路径信息,然后点击下载按钮,进行文件下载。功能以实现,核心代码如下:
download : function*(){ var p= this.query.p||'unkonw'; //取文件名 var start =p.lastIndexOf('/'); var filename = p.substring(~~start+1); console.log(filename); //取真实文件路径 var filepath= path.join(__dirname+'/../public/',p); console.log(filepath); this.set('Content-disposition','attachment;filename='+filename); //var output =fs.createReadStream(filepath); //console.log(output); //output.pipe(this.res); var info =yield F.readData(filepath); console.log(info); this.body=info; },
文件读写函数readData
function readData(path){ return new Promise(function(resolve,reject){ fs.readFile(path,function(err,data){ if(err){ reject(err);//文件存在返回true }else{ resolve(data);//文件不存在,这里会抛出异常 } }); }).then(function(data){ console.log(data); return data; },function(err){ console.log(err); return err; }); } module .exports.readData =readData;
原理也很简单:首先通过get获取到文件的相对路径地址;然后解析出文件名和文件的绝对地址;拿到绝对地址后通过readFile读取文件内容;同时设置header头;Content-disposition:attachment;filename=解析到的文件名;最后将解析到的内容输入到this.body;最后通过浏览器进行文件下载的功能也大功告成了!
相关文章推荐
- matlab 与VS 混合编程
- Android开发之QQ黏性控件(QQ消息未读提醒,在固定范围内,拖拽回弹,超出范围,松手消失)
- python抓取网络内容
- Linux的inode的理解
- ubuntu libtool_args+=: not found 解决办法
- ubantu下卸载软件
- [LeetCode] Decode Ways(!!!DP)
- Ubuntu Ubuntu 14.04系统托盘无法显示
- Solr
- jqm视频播放器,html5视频播放器,html5音乐播放器,html5媒体播放器,video开展demo,html5视频播放演示示例,html5移动视频播放器
- Web service 的入门
- iOS开发网络篇—数据缓存
- 深入了解一下PYTHON中关于SOCKETSERVER的模块-C
- 采用WindowManager添加您自己的自定义视图
- 一些post
- JavaScript prototype
- ACM hdu5432 Pyramid Split
- Jquery实现图片放大镜效果的思路及代码
- 关于移位操作
- Ubuntu Ubuntu使用经验,常见问题及解决方法