Express.js
을 사용 중이며 크기를 조정해야하는 이미지를 업로드하는 경로가 있습니다. 현재 나는 단지 Express
디스크에 파일을 작성하게하고 (커버 내에서 node-formidable
을 사용한다고 생각합니다) 디스크에 두 번째 버전을 쓰는 gm
(http://aheckmann.github.com/gm/)을 사용하여 크기를 조정합니다. 당신이 그것을 디스크에 기록하기 전에 node-formidable
파일 스트림의 보류를 얻을 수 있고, gm
때문에 대신 경로의 흐름을 받아 들일 수 읽었습니다double.write를 제거하기 위해 Express.js와 gm을 통해 업로드 된 스트림 파일
gm(path)
.resize(540,404)
.write(dest, function (err) { ... });
,이 권리를 통과 할 수 있어야한다 디스크에 이중 쓰기를 제거함으로써.
은 내가 form.onPart
를 오버라이드 (override) 할 필요가 있다고 생각하지만 (이 Express
미들웨어?으로 수행해야합니다)와 나는 form
의 보류 또는 정확히 무엇 part
함께 할 수있는 활용하는 방법을 잘 모르겠어요 어디 모르겠어요. 다음은 몇 군데에서 본 코드 골격입니다.
form.onPart = function(part) {
if (!part.filename) { form.handlePart(part); return; }
part.on('data', function(buffer) {
});
part.on('end', function() {
}
}
누군가이 두 부분을 결합하는 데 도움을 줄 수 있습니까? 감사!
감사합니다. 이것은 나에게 거기의 길의 95 %를 줬다. 마지막 문제는'gm'이 비동기 적이기 때문에 크기 조정이 실제로 완료되기 전에 형식 구문 분석이 반환된다는 것입니다. 즉, 클라이언트로 돌아온 URL이 아직 만족스럽지 않습니다. 'partid'처리가 실제로 완료되었을 때 '강력 함'을 알릴 수있는 방법이 있습니까? – Bill
실제로, 나는 대신에 클라이언트에서 이것을 처리하는 것을 끝내었다. 다시 한 번 감사드립니다! – Bill
stdout이 스트림입니다. 그래서 파일을 WriteStream 파일로 pipe() 할 수 있습니다. 그리고 그것은 당신이들을 수있는 "끝"이벤트를 가지고 있음을 의미합니다. stdout.on ('end', fn)을 수행하면 클라이언트에게 작업이 완료되었음을 알릴 수 있습니다. – juandopazo