2014-10-10 63 views
0

我使用请求模块中的NodeJS下载文件时使用此(仅图像文件),需要的文件名,同时下载文件,使用请求模块的NodeJS

request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')), 

或者说

request(url).pipe(fs.createWriteStream(filename)), 

但我只有网址可用,并且我已经要求将文件保存为其实际名称, 所以我需要从给定的网址中找到文件名,

请建议我该DONOT提取的URL

提前感谢的最后部分方法...

+0

的[可能重复Node.js的写作形象到本地服务器](http://stackoverflow.com/questions/5294470/node-js-writing-image-to-local-server) – Michael 2014-10-10 13:53:51

回答

0

一个简单的解决方案可能是:

var path = require('path'); 
var fs = require('fs'); 

// ... 

var filename = path.basename(url); 

request(url).pipe(fs.createWriteStream(filename)); 
+0

没有mscdex,我没有要求这个,我知道这个提取网址的最后部分和我的URL有所不同,包括文件密钥和令牌像http://beta.business.applane.com/rest/file/down load = token = 5437bdb1811dfb0f03ec49a3&filekey = 541bc4c909e41ce549567c07,它给出下面的文件名下载?令牌= 5437bdb1811dfb0f03ec49a3&filekey = 541bc4c909e41ce549567c07,但其实它的文件名是photo.jpg,有什么办法可以得到这个... – 2014-10-11 04:20:43

+0

那么,在这种情况下,检查你的' Content-Disposition'头部值。如果它有一个'filename'参数,那么你需要提取它。 FWIW [此功能](https://github.com/mscdex/busboy/blob/3a24ac52aa02433f0f44b2a5954fd4e3e3ee3079/lib/utils.js#L7-L91)是'busboy'模块用来解析这些类型的标头值的。 – mscdex 2014-10-11 04:47:59

+0

我没有在响应中获得内容处置 – 2014-10-11 05:40:10