玩節點js和圖像下載。我偶然發現了一個與urls和http.get
有關的問題,如果url中包含查詢中的空格,那麼這個問題會失敗。我設法通過自己逃脫url路徑來解決問題。如果我使用url.parse()
,路徑變量將在第一個空格處被切斷。我的解決方案有效,但我想知道是否有更好的解決方案。http.get與空間的網址
function downloadFileFromURL(file_url, callback)
{
//-------------
// really complicated way to get a http.get save path
var protocol = url.parse(file_url).protocol;
var host = url.parse(file_url).host;
var full_domain = protocol + '//' + host;
var escaped_path = escape(file_url.substring(full_domain.length));
var options = {
host: host
, port: 80
, path: escaped_path
}
var file_url_info = url.parse(file_url);
var file_path = path.join(__dirname, 'images', path.basename(file_url));
var request = http.get(options , function(res){
var imagedata = ''
res.setEncoding('binary')
res.on('data', function(chunk){
imagedata += chunk;
})
res.on('end', function(){
fs.writeFile(file_path, imagedata, 'binary', function(err){
if (err) callback(err);
else {
callback(null, file_path);
}
})
})
})
}
空間來自哪裏? – Neil 2012-07-22 23:22:15
有效的URL不允許包含未轉義的空格。 'downloadFileFromURL'的參數來自哪裏? – ebohlman 2012-07-23 03:52:56
它是一個像這樣的圖像的路徑,解析出一個rss feed:'http://payload71.cargocollective.com/1/0/31246/3728074/13-Screen Shot 2012-07-05 at 12.28。 08 PM.png' – 2012-07-23 08:37:50