pipe는 쓰기 가능한 스트림이 매개 변수로 필요합니다. 익스프레스의 res 객체를 파이프 대상으로 직접 사용할 수 있습니다. 당신이 S3에 업로드 할 경우에, 당신은 당신이 응답 직접
에 읽기 개체를 리디렉션 파이프를 사용하여 다운로드하려면 경우가
var fs = require ('fs')
fs.readFile(req.files.image.path, function (err, data) {
var AWS = require('./aws_config')
var s3 = new AWS.S3()
var bucket = ''
s3.putObject({
ACL: 'public-read', // by default private access
Bucket: bucket,
Key: file_name,
Body: data
}, function (err, data) {
if (err) {
console.log(err)
res.send(500, {msg: 'image upload failed', error: err})
} else {
console.log('S3 upload Successful')
res.send({})
}
});
을 S3에 REQ 스트림에서 파일을 읽고 쓰는 putObject을 사용할 수 있습니다
app.get('/download/:file', function(req, res, next) {
var AWS = require('./aws_config')
var s3 = new AWS.S3()
s3.getObject({
Bucket: '',
Key: req.params.file
}, function (err, data) {
if (err) console.log (err)
var fs = require ('fs')
var filePath = __dirname + "/downloads/" + req.params.file
fs.writeFile(filePath, data.Body, function (err) {
if (err) console.log(err)
else {
res.attachment(filePath)
var filestream = fs.createReadStream(filePath);
filestream.pipe(res);
// TODO: delete file from server ?
}
});
})
})
감사합니다 Kamrul, 귀하의 코드는 작동하지만 aws apis를 사용하지 않으려 고합니다. 나는 폼 데이터 플러그인으로 작업 할 수 있었다. – DanyZift
@ kamrul 같은 코드를 시도했지만 "TypeError : 정의되지 않은 속성 '파일'을 읽을 수 없습니다. restify.js 프레임 워크를 사용하고 있습니다. –
@vivek, express로 처리되는 req 객체가'files'을 포함하고 있는지 확인해 주시겠습니까? 그렇지 않으면 특급 멀티 파트 설정을 확인하십시오. – Kamrul