2012-05-20 6 views
4

node.js 앱의 파일을 일반적인 업로드 메커니즘을 통해 파일을 허용하는 다른 웹 서버로 푸시해야합니다. ,node.js에서 다른 웹 서버로 프로그래밍 방식으로 파일 업로드

<form enctype="multipart/form-data" action="upload.php" method="POST"> 
file: <input name="uploaded" type="file" /><br /> 
name: <input type="text" name="filename" /><br /> 
<input type="submit" value="upload" /> 
</form> 

사용자가 파일을 선택하고 텍스트 입력 필드에 파일명을 부여하면, 그 파일이 서버에 업로드한다 : 예를 들어, 상기 수신 서버는이 같은 형태로 페이지를 밝혔 upload.php (내가 제어 할 수 없음)를 통해 제공되고 제공된 이름으로 저장됩니다. (양식에 다른 항목이있을 수 있지만 단순함을 위해 표시된 항목 만 표시하고 있습니다). PHP 스크립트는 "ok"또는 "error ..."라는 간단한 텍스트 응답으로 응답합니다 (오류 포함).

이제 프로그래밍 방식으로 node.js에서 해당 PHP 스크립트로 파일을 보내고 싶습니다. 파일 (node.js 측면에 있음)은 파일 시스템에 존재할 수도 있고 존재하지 않을 수도 있습니다. 예를 들어 URL에서 끌어 내려 놓을 수도 있고, 사용자가 업로드 할 수도 있습니다.

필자는이 줄을 따라 몇 가지 물건을 보았지만 매개 변수 (파일 이름 등)를 처리하는 방법을 모르거나 옵션 개체에서 제공 할 항목이 확실하지 않습니다. 또한이 예제는 파일 시스템 파일에서 오는 것이라고 가정합니다.이 파일 시스템 파일은 내가 말했던대로 또는 그렇지 않을 수도 있습니다.

fs.createReadStream(filename).pipe(http.request(options, function(response) { 
})); 
+0

이 예제는 읽기 스트림을 파이프합니다.이 스트림은 OS 파일이 아닌 스트림을 사용하여 처리 할 수 ​​있습니다. 너는 무엇을 시도하고 일하지 않았는가? 네가이 문제를 해결할 수 있었습니까? –

+0

예, 방금 "포스터"모듈을 사용했으며 세부 정보를 처리했습니다. :) – rob

+0

좋아요! 그 대답을 (사용했던 코드와 함께) 추가하고 받아 들일 수 있습니까? –

답변

0

"포스터"모듈을 사용하여 쉽게 만들었습니다. 포스터 호출을 둘러싼 씬 래퍼입니다. "fileId"는 파일을 나타내는 양식 요소의 이름이고, 다른 매개 변수는 "fields"객체에 들어 있습니다.

var _poster = require('poster'); 

var uploadFileToRemoteServer = function (remoteScript, filename, fileId, fields, cb) { 
    _poster.post(
     filename, 
     { 
     uploadUrl: remoteScript, 
     method: "POST", 
     fileId: fileId, 
     fields: fields || {} 
     }, 
     function (err, r) { 
     if (err) { 
     } else { 
      if(cb) 
      cb(r); 
     } 
     }); 
    } 
+1

다음 https://www.npmjs.com/package/poster에서 비틀 거릴 미래의 ppl에 대해 –

관련 문제