NodeJS

2013-02-06 3 views
1

의 pkgcloud에서 "스트림 및 파이프 가능"이란 의미는 무엇입니까? 내 문제는 아마존에 이미지 업로드를 작동시키는 것입니다. 서버에 파일을 저장하지 않는 해결책을 찾고 있었는데 다음을 Amazon에 업로드하십시오.NodeJS

인터넷 검색을 나는 pkgcloud을 발견하고 README.md에 말한다 :

특별한주의가 방법 스트림 파이프 할 수있다 있도록 지불하고있다.

누군가가 그 의미와 내가 원하는 것을 설명 할 수 있습니까?

답변

3

Yupp, 즉 s3 라이브러리라는 것을 알았습니다.

이 라이브러리가 "스트림"을 노출한다는 것은 무엇을 의미합니다. 다음은 스트림을 정의하는 API입니다. http://nodejs.org/api/stream.html

노드의 스트림 인터페이스를 사용하면 모든 읽을 수있는 스트림 (이 경우 POST의 본문)을 쓰기 가능한 스트림 (이 경우 S3 업로드)으로 파이프 할 수 있습니다. 여기에 예를

var pkgcloud = require('pkgcloud'), 
     fs = require('fs'); 

var s3client = pkgcloud.storage.createClient({ /* ... */ }); 

app.post('/upload', function(req, res) { 
    var s3upload = s3client.upload({ 
    container: 'a-container', 
    remote: 'remote-file-name.txt' 
    }) 

    // pipe the image data directly to S3 
    req.pipe(s3upload);  
}); 

편집이다 : How to handle POSTed files in Express.js without doing a disk write

편집 : 여기

는 파일 스트림을 지원 라이브러리의 다른 종류에 직접 업로드 방법 파이프의 예입니다 질문에 대한 답변을 완료하려면 채팅에 등장한 사람 :

req.end()은 스트림 마법 덕택에 자동으로 을 호출합니다. 운영자가 req의 끝에서 다른 작업을 원한다면 그는 쉽게 할 수 있습니다 : req.on('end', res.send("done!"))

+0

그러면 메모리에 저장됩니까? – nick

+0

"저장"되지 않지만'pipe()'중에 메모리에 남게됩니다. :) – rdrey

+0

argh. 아마존에 파일을 업로드하는 "더 좋은 방법"이 있다고 생각하십니까? – nick