2013-12-14 37 views
2

我需要使用net模塊和socket.write命令來實現Web服務器。 我使用下面的代碼來發送文本文件(HTML,CSS和等):發送映像文件響應 - node.js

fs.readFile(file,encoding='UTF8', function (err, data) { 
if (err) throw err; 
var dataToReturn=data.toString(); 
socket.write('Content-Length:'+dataToReturn.length+'\r\n'); 
socket.write('\r\n'); 
socket.write(dataToReturn); 
}); 

其工作正常,但是當我需要發送圖片文件這是行不通的。 我該怎麼辦?

回答

3

通過將編碼設置爲utf8,您明確告訴節點將您的文件轉換爲文本字符串,但它是一個二進制圖像,因此轉換過程可能會破壞某些數據並導致錯誤的長度。保留數據的緩衝區這樣的:

fs.readFile(file, function (err, data) { 
    if (err) throw err; 
    socket.write('Content-Length: ' + data.length + '\r\n'); 
    socket.write('\r\n'); 
    socket.write(data); 
}); 
1
fs.readFile(file, function (err, data) { 
    if (err) throw err; 
    //Content-Length should be binary length not string length 
    socket.write('Content-Length:'+data.length+'\r\n'); 

    socket.write('\r\n'); 
    socket.write(data); 
}); 

您可能需要的內容類型,讓您迴應更有效:)

socket.write(「內容類型:」 + MIME類型+'\ r \ n');