2012-11-05 2 views
30

저는 Buffers와 ReadableStreams를 처음 사용합니다. 어쩌면 이것은 어리석은 질문 일 수 있습니다. ReadableStream을 입력으로받는 라이브러리가 있지만, 입력은 base64 형식의 이미지입니다. 그래서 같은 버퍼에 내가 가지고있는 데이터를 변환 할 수 있습니다 :nodejs에서 버퍼를 ReadableStream으로 변환

var img = new Buffer(img_string, 'base64'); 

그러나 나는 ReadableStream로 변환 또는 나는 ReadableStream에 얻은 버퍼를 변환하는 방법을 모른다.

이 작업을 수행 할 수있는 방법이 있습니까, 아니면 불가능을 달성하려고합니까?

감사합니다.

답변

20

은 당신과 같이 Node Stream Buffers를 사용하여 ReadableStream을 만들 수 있습니다

// Initialize stream 
var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({ 
    frequency: 10,  // in milliseconds. 
    chunkSize: 2048  // in bytes. 
}); 

// With a buffer 
myReadableStreamBuffer.put(aBuffer); 

// Or with a string 
myReadableStreamBuffer.put("A String", "utf8"); 

주파수는 0 그래서이 일정 지연을 소개 할 수 없습니다.

+0

조금 늦었습니다. 어떻게 문제를 해결했는지 기억이 나지 않지만 좋은 해결책으로 보입니다. 아무도 이것을 확인하지 않으면 큰 일입니다. 이 변환에 대해 0을 찾았습니다. – Masiar

+0

작동하는지 확인 - filebuffers를 스트림으로 변환하는 방법을 찾을 때 이것을 발견했습니다. –

+0

파일을 처리하는 파일이있는 경우 즉시 파일 읽기 스트림을 다음과 같이 열어야합니다. http://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options – vanthome

32

Node Stream Buffer은 분명히 테스트에 사용하기 위해 설계되었습니다. 지연을 피할 수 없으므로 프로덕션 용도로 적합하지 않습니다. 읽을 수있는 스트림의 _read 기능은 점진적으로 push에게 그것을 기본 소스에서 데이터를 수집해야하고, 일반 과정에서

import { Readable } from 'stream' 

const buffer = new Buffer(img_string, 'base64') 
const readable = new Readable() 
readable._read =() => {} // _read is required but you can noop it 
readable.push(buffer) 
readable.push(null) 

readable.pipe(consumer) // consume the stream 

... 이런 How to wrap a buffer as a stream2 Readable stream?

+0

그냥 이것이 가장 좋은 해결책이라고 말하고 싶습니다. 어떤 경우 업로드가 거의 10 배 빨라졌습니다. 감사!! – Abadaba

+0

답을 수락 한 솔루션보다이 솔루션을 고려하십시오. –

6

뭔가 :

Gabriel Llamas이 대답 streamifier을 제안합니다 필요할 때까지 거대한 소스를 메모리에 저장하지 않도록합니다.

이미 소스가 메모리에 있지만이 경우 _read이 필요하지 않습니다.

전체 버퍼를 푸시하면 읽을 수있는 스트림 API로 래핑됩니다.

0

다음은 streamifier 모듈을 사용하는 간단한 해결책입니다.

const streamifier = require('streamifier'); streamifier.createReadStream(new Buffer ([97, 98, 99])).pipe(process.stdout);

당신은 인자로 문자열, 버퍼 및 객체를 사용할 수 있습니다.

관련 문제