2013-12-14 5 views
2

net module 및 socket.write 명령 만 사용하여 웹 서버를 구현해야합니다. 잘 작동이미지 파일 보내기 - 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); 
}); 

그것의, 그러나 나는 이미지 파일을 전송해야 할 때 작동하지 않습니다 : I 텍스트 파일 (HTML, CSS 등)를 전송하기 위해 다음 코드를 사용하고 있습니다. 어떻게해야합니까?

답변

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 만들기 위해 콘텐츠 유형을해야 할 수도 있습니다 ('콘텐츠 유형 :'+ 마임 + '\ r \ n');