나는 request
및 node
소스에 유효한 것을 찾기 위해 몇 시간을 보냈다, 그리고 마지막으로 나에게 더 정확한 느낌이 다른 접근 방법을 발견했다.
우리는 drain
이벤트와 bytesWritten
특성에 의존 할 수
let size = fs.lstatSync(path).size;
let bytes = 0;
request.put({
url: 'https://example.org/api/upload',
body: fs.createReadStream(path).on('data', (chunk) => {
console.log(bytes += chunk.length, size);
})
});
스트림 버퍼 크기 : 당신이 파일 바이트의 진행 상황을 처리해야하는 경우 또는
request.put({
url: 'https://example.org/api/upload',
body: fs.createReadStream(path)
}).on('drain',() => {
console.log(req.req.connection.bytesWritten);
});
, 그것은 스트림을 data
이벤트를 사용하는 것이 더 쉽습니다 는 65536
바이트이고 읽기/배수 절차는 반복적으로 실행됩니다.
이것은 나를 위해 node v4.5.0
과 request v2.74.0
로 꽤 잘 작동하는 것 같습니다.
아주 좋아요, 고마워요! – darma
이 역시 찾고 있습니다. 내부 API (미래의 nodejs 버전에서 변경 될 것으로 예상 됨)처럼 보이지만, 유일한 해결책 인 것 같습니다. –
이것은 고통 스럽습니다. 이것이 유일한 Node.js 솔루션입니까? 정말로, Node.js의 HTTP API에 대한 파일 업로드 문제가 아직 해결되지 않은 이유는 무엇입니까? – Sukima