0
nodeJs로 sftp 서버를 개발 중이며 파일을 업로드해야합니다. 내가 SFTP를 콘솔에 파일을 넣어파일의 정보를 읽을 수있는 스트림으로 가져올 수 있습니까?
session.on("writefile", function (_path, readstream) {
console.warn("Receipt file " + Path.basename(_path));
var uploadParams = { Bucket: Vertigo.getenv('APP_S3_BUCKETNAME'), Key: Path.basename(_path), Body: readstream }
s3.upload(uploadParams, function (err, data) {
if (err) {
console.warn(err, err.stack)
return err;
} else {
console.log("File: " + data.Key + " successfully uploaded");
/**
* AJOUTER FICHIER DANS MONGODB
*/
receiptFile.insert({
date: new Date(Date.now()),
userId: ObjectID(request.params.userId),
file: {
s3BucketName: data.Bucket,
s3ObjectName: data.Key,
name: data.Key,
//size: data.Contents.Size, //Comment récuperer la taille ?
// mimetype: file.mimetypes //Comment récuperer le mimeType?
}
}, function (err, result) {
if (err) {
var deleteParams = { Bucket: Vertigo.getenv('APP_S3_BUCKETNAME'), Key: Path.basename(_path) }
//Si une erreur s'est produite, on supprime les fichiers insérés précèdemment pour que la bdd et minio soient toujours synchronisés
s3.deleteObject(deleteParams, function (err, data) {
if (err) {
console.warn(err, err.stack)
}
console.log(deleteParams.Key + " : Deleted from : " + deleteParams.Bucket)
})
return err;
}
else {
console.log("Mongodb : File inserted in our database");
}
})
}
});
readstream.on("end", function() {
console.warn("File has been wrote");
});
});
});
});
, 나는 파일을 읽을 수있는 이름 인 _path을 가지고 : 나는 거기에 이벤트 "의 WriteFile"을 가지고 node-sftp-server
: 나는이 모듈을 사용하고 있습니다 흐름. 두 단계로 그렇게해야합니다. 1 단계 : 나는
MongoDB를
에 정보를 정기적으로 등록해야하지만 ..에 등록 할 파일의 크기와 MIME 타입을 알고 이 필요합니다 내가 S3 SDK 클라이언트에서 파일을 업로드해야합니다 2 단계 (그것은 실제로 작동)s3.upload 메서드는 BucketName, 파일 이름 및 버킷에있는 파일의 위치 만 반환합니다.
업로드 된 파일의 크기 및 mimeType을 어떻게 얻을 수 있습니까 ??
누군가가 나를 도울 수 있다면, 내가 :)
그래 내가 이미 하나를 시도하지만 콘텐츠 형식은 항상 "를 application/octet-stream "입니다. 파일 자체가 아닌 읽을 수있는 스트림의 유형입니다. – Cupkek05
또는 이러한 메서드에서 메타 데이터를 가져올 수없는 경우, 이진 문자열로 읽을 수있는 스트림을 구문 분석 할 수 있습니까? ? 가능한 경우 putObject 메서드를 사용할 수 있습니다. – Cupkek05