2016-04-10 13 views
0
.get('/listscripts/:filename', function(req, res){ 
    fs.readFile(__dirname + '/../public/scripts/' + req.params.filename, 'utf8', function(err, content) { 
     if (err) return; 
     res.send(content); 
    }); 
}) 

Bir metin dosyasının içeriğini readFile ile döndürmeye çalışıyorum, ancak bazı nedenlerle birlikte tüm satırları birleştiriyor.readFile birlikte birleştirilen tüm satırları döndürür

Yani şöyle bir dosyayı okuyorsam: Bunu düzeltmek için bir yol var mı

Line 1 Line 2 Line 3 

:

Line 1 
Line 2 
Line 3 

Sonra Readfile çıktı dönecek?

+0

? Html sayfasında görüntülemek için? Bu durumda, satırsonu karakteri boşluk olarak yorumlanır. Tüm yeni satır karakterini '
'olarak değiştirmeniz gerekir. – alexmac

+0

Yeh, bir html sayfasında görüntülemeye çalışıyorum. Dosyayı düzenlemek zorunda mıyım yoksa dosyaları düzenlemeden yapmanın bir yolu var mı? – merstik

+0

Sorunuzu cevapladım, kod içinde yapabilirsiniz. Ancak dosya içeriği statik ise, en iyi yol bir html sayfası oluşturup istemciye göndermektir. – alexmac

cevap

0

Bu dosya içeriğini html sayfasında görüntülemek için kullanırsanız, bu durumda satırsonu karakteri boşluk olarak yorumlanır. Sen <br/> tüm satır karakteri değiştirmelisiniz:

app.get('/listscripts/:filename', function(req, res){ 
    fs.readFile(__dirname + '/../public/scripts/' + req.params.filename, 'utf8', function(err, lines) { 
     if (err) { 
      res.send('Error'); 
      return; 
     }; 
     var content = lines.split('\n').map(function(line) { 
      return line + '<br/>'; 
     }); 
     content = '<div>' + content + '</div>'; 
     res.set('Content-Type', 'text/html'); 
     res.send(content); 
    }); 
}); 
+0

TypeError: lines.map bir işlev değil Sanırım bir şey özlüyorum ... belki bir şey mi yoksa bir şey mi? – merstik

+0

Şimdi html ["satır 1 \ r
", "satır 2 \ r
", "satır 3
"] görüntüler. Bunu bir div içinde görüntülemeye çalışıyorum (eğer yardımcı oluyorsa):

{{content()}}
merstik

+0

"res.send" ifadesinden önce 'res.set (' İçerik Türü ',' text/html ') 'eklemeye çalışın veya içeriği "div" ile sarın. – alexmac

0

Sen satır satır okumak ve işlemek gibi nihai yanıt olarak ekleyebilirsiniz: Eğer bu dosya içeriğini kullanırım

app.get('/listscripts/:filename', function(req, res){ 
    var result = []; 
    var readline = require('linebyline'), 
     rl = readline((__dirname + '/../public/scripts/' + req.params.filename); 
     rl.on('line', function (line, lineCount, byteCount) { 
      console.log(lineCount, line, byteCount); // do something with the line of text 
      result.push(line);    
    }) 
    .on('error', function (e) { 
      console.log("error", e); 
      // something went wrong 
     }) 
    .on('end', function() { 
     // All lines are read, file is closed now. 
     res.send(result);  
    }); 

}); 
İlgili konular