2014-12-27 2 views
0

(클라이언트로) 복원 할 이미지를 게시하려고하는데 서버가 저장해야합니다.읽기 스트림을 쓰기 스트림으로 파이핑하면 작동하지 않습니다.

req.pipe(fs.createWriteStream('test.jpg')); 

이 작동하지 않습니다. 빈 파일이 생성되지만 아무것도 생성되지 않습니다. 그것은 req.body을 버퍼에 복사 한 다음 fs.writeFile(...)을 복사 할 때 작동합니다. req.body.pipe도 시도했지만 오류가 발생합니다.

+0

궁금한 점은 gridfs 때문입니까? 또한 writeStream에서 [finish] (http://nodejs.org/docs/v0.10.36/api/stream.html#stream_event_finish) 이벤트를 듣고 있습니까? 응답을 보내기 전에 모든 데이터가 스트림을 통과하는지 확인해야합니다. – MForMarlon

답변

0

미들웨어 체인의 다른 항목 (아마도 restify.bodyParser())은 이미 요청 본문을 버퍼 또는 문자열 req.body으로 스트리밍하고 있으며 두 번 스트리밍 할 수 없습니다. 스트리밍을 직접 파일 시스템으로 처리하려는 경우 미들웨어를 찾아이 경로에 대해 사용하지 않도록 설정하십시오.

1

이미 요청에서 모든 데이터를 읽는 보디 파서 미들웨어를 사용하고 있으므로 읽을 내용이 없습니다. 요청 객체에서 직접 읽으려는 경우 루트 처리기 및/또는 본문 파싱 미들웨어의 배치를 조정하십시오.

그러나 요청에 이미지 데이터 만 포함 된 경우에만 작동합니다. 일반적으로 요청은 적어도 하나의 파일이 포함되어있는 경우 multipart/form-data으로 형식화되므로 요청을 파이프하고 이미지 데이터 만 예상 할 수 없습니다.

관련 문제