2014-10-20 3 views
0

나는 이미 모든 인터넷 검색을하고 아직 내 문제를 찾지 못했습니다. multipart를 사용하여 nodejs에 업로드하는 중입니다. 그러나 모든 파일이 손상되어 많은 분석 솔루션을 사용하고 있으며 강력 함으로 해결할 수 있습니다. 그러나 내 자신의 구문 분석 방법을 배우고 싶습니다. 출력 파일의 바이너리 코드는 원래 [크기 및 바이너리 (hexdump -C int 터미널을 사용하여 확인했습니다)]와 정확히 동일합니다.nodejs에 업로드 할 때 손상된 파일/이미지

var http = require("http"); 
 
var fs = require("fs"); 
 

 
http.createServer(function(req, res){ 
 
    if(!((req.url === "/upload") && (req.method === "POST"))){ 
 
     home(res); 
 
    }else{ 
 
     upload(req, res); 
 
    } 
 
}).listen(8888); 
 

 
function home(res){ 
 
    res.end("<html><body><form action='/upload' method='post' enctype='multipart/form-data''><input name='file' type='file'/><input type='submit'></form></body></html>"); 
 
} 
 

 
function upload(req, res){ 
 
    
 
    var data = ""; 
 
    req.setEncoding("binary"); 
 
    req.addListener("data", function(chunk){ 
 
     data = chunk.split("\r\n")[4];/*This was my last chance, but it also failed*/ 
 
    }); 
 
    req.addListener("end", function(){ 
 
     res.end(); 
 
     console.log(data); 
 
     fs.writeFile("icone.ico", data, "binary", function(err){/*I also used fs.createWriteStream*/ 
 
      console.log("done"); 
 
     }); 
 
    }); 
 
}

답변

0

당신은 다중 요청을 보내는 :

다음은 코드의 샘플입니다. 즉, 업로드하는 단일 파일의 원시 내용이 아니라 각 부분이 별도의 양식 필드 인 여러 부분을 허용하는 특수 형식 (귀하의 경우에는 파일 양식 필드가 1 부분 만 있음) . busboy, multiparty 또는 formidable과 같이 multipart/form-data 요청을 구문 분석 할 수있는 모듈을 사용해야합니다.

+0

이 경우 나는 단지 하나의 부분만을 받고 있습니다. 그것은 favicon입니다. 내가 원하는 것은 멀티 파트를 구문 분석 한 다음 모듈을 사용하지 않고 디스크에 파일을 저장하는 것입니다. –

+0

행운을 빌어 서 파서를 작성하십시오. – mscdex

관련 문제