2017-05-14 1 views
0

이 아래에있는 내 압축 파일의 압축을 풀고 스트림을 통해 전송하는 내 정말 간단한 파일 다운로드 경로입니다 최종 오류가 발생한 후 쓰기 얻을 익스프레스 4.15.2 btw 사용 노드 스트림은 내가 파일을 업로드 및 다운로드 할 스트림을 테스트하고 있습니다

내가 그것을 잘 처음 작동하고 나에게 브라우저에서 PDF 파일을 보여줍니다이 경로를 시도,하지만 난 페이지를 새로 고치면 다음 내 서버에이 오류가

:

events.js:163 
     throw er; // Unhandled 'error' event 
    ^

Error: write after end 
    at writeAfterEnd (_stream_writable.js:191:12) 
    at Unzip.Writable.write (_stream_writable.js:238:5) 
    at ReadStream.ondata (_stream_readable.js:557:20) 
    at emitOne (events.js:96:13) 
    at ReadStream.emit (events.js:191:7) 
    at readableAddChunk (_stream_readable.js:178:18) 
    at ReadStream.Readable.push (_stream_readable.js:136:10) 
    at onread (fs.js:1938:12) 
    at FSReqWrap.wrapper [as oncomplete] (fs.js:629:17) 
내가 무엇을 알고 싶습니다

계속 하시겠습니까?

답변

0

gzip 파일의 압축을 풀려면 zlib 라이브러리를 사용하고 있지만 "zlib.createGzip"및 "zlib.createUnzip"은 스트림을 반환하므로 이미 종료 된 스트림을 재사용한다는 사실을 잊어 버렸습니다. 'after end error '.

나쁜 것은 내가 뭐하고 있었 :

const unzip = zlib.createUnzip(); 

app.get('/file', (req, res) => { 
    fs.createReadStream('./upload/compress_aurelien-boquet.pdf') 
     .pipe(unzip) 
     .pipe(res); 
}); 

좋은 일을 :

app.get('/file', (req, res) => { 

    fs.createReadStream('./upload/compress_aurelien-boquet.pdf') 
     .pipe(zlib.createGunzip()) 
     .pipe(res); 

}); 
관련 문제