2014-10-10 54 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