2015-01-17 3 views
2

파일 업로드에 multiparty을 사용하고 있습니다. 나는 Node.JS와 스트리밍에 대해 매우 새로운 사람이다. 그래서 내 질문은, 그 파일을 stream.post.parse() 내 시도한 코드에서 일을하고있는 것처럼 반환되는 스트림 맞지? 내 로컬 서버의 절대 경로이기 때문에 이것은 절대 경로이며 분명히 localhost에서 작동하고 있음을 의미합니다. 그러나 사용자가 자신의 컴퓨터에서도 파일을 업로드하려고 시도 할 때 작동할까요?Node.JS에 파일 업로드

form.parse(req, function (err, fields, files) { 
    var rs= fs.createReadStream(files.file[0].path); 
    var fileDate; 
    rs.on('readable', function() { 
     while (null !== (chunk = rs.read())) { 
      fileDate += chunk; 
     } 
    }); 

    rs.on('end', function() { 
     console.log('importedData', fileDate); 
    }); 
}); 

감사합니다. 더 자세한 설명이 필요하면 알려주세요.

답변

1

올바른 것처럼 보입니다. 기본적으로 업로드 된 파일은 임시 폴더에 저장됩니다. Linux를 사용하는 경우/tmp 일 가능성이 높으므로 사용자의 파일은 프런트 엔드를 통해 파일을 업로드 할 때 같은 위치에 저장됩니다.

+0

고마워요! 그러나 실제로 필자는 앞에서 파일을 서버에 정확하게 업로드하지는 못했다고 언급 했어야합니다. 사실 프론트 엔드 사용자는 form-data에 파일을 전달하고 있습니다. 백엔드에서는 파일을 읽고 파일의 데이터를 사용하고 서버의 아무 곳에 나 저장하지 않습니다! 정확히 POSTMAN의 양식 데이터와 같으며 파일을 파일 형식으로 전달합니다. 여기서 파일을 찾아보고 추가 할 수 있습니다. 그래서 당신이 설명했던 것을 기반으로 임시 파일은 자동적으로/tmp와 같은 어딘가의 서버 (Linux 환경)에 저장 될 것입니다, 맞습니까? file.path가 작동해야합니까? 권리? 다시 한번 감사드립니다 –

+1

@ user3399784'multiparty'는 ['file'] (https://github.com/andrewrk/node-multiparty#file-name-file)과''field'] (https : // github .com/andrewrk/node-multiparty # field-name-value) 이벤트를 사용하여 먼저 디스크에 저장하지 않고 양식 데이터를 가져옵니다. 또한 ['form.parse()'] (https://github.com/andrewr/node-multiparty#formparserequest-cb) 콜백을 전달하지 않아야합니다. – mscdex

+0

@mscdex 그래서'form.parse()'에 콜백을 사용하고 있다는 것을 이해하면 올바르게 디스크에 파일을 저장하고있는 중입니까? 그리고 데이터가 서버의 하드 디스크에 저장되고 file.path가 예제 코드에서 유효하므로 내 코드가 작동하지만 권장되는 방법은 아니므로 파일을 하드 디스크에 저장하지 않도록해야합니다. –