사진을 업로드하고 저장하는 데 Amazon S3 Bucket과 함께 Meteor.js를 사용하고 있습니다. 나는 운 석 packs collectionFS와 aws-s3을 사용하고 있습니다. 내 aws-s3 연결을 올바르게 설정 했으므로 이미지 컬렉션이 제대로 작동합니다.CollectionFS 및 cfs-s3 유성 패키지를 사용하여 AWS S3 Bucket 업로드
클라이언트 측 이벤트 핸들러 :
'click .submit': function(evt, templ) {
var user = Meteor.user();
var photoFile = $('#photoInput').get(0).files[0];
if(photoFile){
var readPhoto = new FileReader();
readPhoto.onload = function(event) {
photodata = event.target.result;
console.log("calling method");
Meteor.call('uploadPhoto', photodata, user);
};
}
그리고 내 서버 측 방법 :
'uploadPhoto': function uploadPhoto(photodata, user) {
var tag = Random.id([10] + "jpg");
var photoObj = new FS.File({name: tag});
photoObj.attachData(photodata);
console.log("s3 method called");
Images.insert(photoObj, function (err, fileObj) {
if(err){
console.log(err, err.stack)
}else{
console.log(fileObj._id);
}
});
선택 파일은 .JPG 이미지 파일 만 업로드에 내가 서버에이 오류가 메소드 :
'uploadPhoto'메소드를 호출하는 중 예외 오류 : DataMan 생성자가 지원하지 않는 데이터를 수신했습니다.
이미지 파일을 직접 전달하거나 데이터로 첨부하거나 fileReader를 사용하여 text/binary/string으로 읽을 수 있습니다. 나는 아직도 그 오류를 얻는다. 제발 조언.
삽입 클라이언트를 만들고 싶지 않은 이유가 있습니까? – chaosbohne
아마도 AWS 자격 증명 (키 + 비밀)을 안전하게 유지하고 클라이언트에 제공하지 않는 것은 잘못된 접근입니다. 또한 양동이에 업로드를 허용하기 전에 서버 측면에서 특정 유효성 검사를 수행하려고합니다. 덕분에 – zakir2k