使用AngularJS从Node.JS服务器下载文件
发布时间:2020-12-17 10:19:44 所属栏目:安全 来源:网络整理
导读:我想从运行NodeJS的服务器上用我的浏览器下载文件. 在服务器端,为了提供我有的文件: exports.download = function(req,res) { var filename = "33.jpg"; var filePath = path.join(__dirname,'..','downloads',filename); var stat = fs.statSync(filePath)
我想从运行NodeJS的服务器上用我的浏览器下载文件.
在服务器端,为了提供我有的文件: exports.download = function(req,res) { var filename = "33.jpg"; var filePath = path.join(__dirname,'..','downloads',filename); var stat = fs.statSync(filePath); var fileToSend = fs.readFileSync(filePath); res.writeHead(200,{ 'Content-Type': 'image/jpeg','Content-Length': stat.size,'Content-Disposition': filename }); res.end(fileToSend); }; 名为33.jpg的文件存在,大小为744Kb.来自客户的电话很有效 在AngularJS的客户端,这里是我如何调用post调用来获取文件(目前不使用参数uri): $scope.downloadTrack = function(uri) { $http.post('/api/files/download',{uri: uri}).then(function(response) { var blob = new Blob([response.data],{ type: 'image/jpeg' }); var fileName = response.headers('content-disposition'); saveAs(blob,fileName); },function(response) { console.log('Download error'); console.log(response); }); } 标题是好的(我可以检索文件名) 我的问题是下载了一个文件,但是大小为1.5Mb并且不可读.我尝试了不同的流方法,将数据附加到响应,管道等,但没有成功. PS:如果信息有用,我和Yeoman一起创建了这个项目 谢谢大家 [更新] exports.download = function(req,filename); var stat = fs.statSync(filePath); var fileToSend = fs.readFileSync(filePath); res.set('Content-Type','image/jpeg'); res.set('Content-Length',stat.size); res.set('Content-Disposition',filename); res.send(fileToSend); }; [更新2]
通过设置为blob的响应类型的定义解决了问题
$http({ url: '/api/files/download',method: "POST",data: { uri: uri },responseType: 'blob' }).then(function (response) { var data = response.data; var headers = response.headers; var blob = new Blob([data],{ type: 'audio/mpeg' }); var fileName = headers('content-disposition'); saveAs(blob,fileName); }).catch(function (response) { console.log('Unable to download the file') }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 【数据结构】树状数组模板--CODE[VS] 1080线段树练习and108
- 如果使用除bash之外的任何其他内容,我如何才能拥有term.el(
- twitter-bootstrap – Twitter bootstrap – 在已经打开的模
- Bootstrap教程JS插件弹出框学习笔记分享
- 在docker窗口上运行linux容器
- bash – 进入目录时是否可以自动进行一些shell调用?
- 表格 – Angular 5 – 禁用单选按钮
- [Angular] Extract Implementation Details of ngrx from a
- Angular 2 beta – 选择不起作用(Chrome除外)
- Mirantis使用Kubernetes容器化OpenStack以缓解运维挑战