Skip to content

Instantly share code, notes, and snippets.

@ppillip
Last active June 11, 2016 23:07
Show Gist options
  • Save ppillip/b7b3a98f7575a471d46c to your computer and use it in GitHub Desktop.
Save ppillip/b7b3a98f7575a471d46c to your computer and use it in GitHub Desktop.
//클라이언트 js
var obj = event.currentTarget.files[0];
var fileReader = new FileReader();
fileReader.onload = function(file){
Meteor.call('saveFile',file.srcElement.result,obj.name,'binary',function(err,result){
if(err){
alert(err);
}else{
alert(result.msg);
}
});
}
fileReader['readAsBinaryString'](obj);
//서버 메소드
Meteor.methods({
saveFile: function(blob, name, encoding) {
var result = {msg:'',err:''}; fs = Npm.require( 'fs' ), fut = new Future(), path = '/_meteorfile/';
//존재 여부 체크 등등..
fs.writeFile(path + name, blob, encoding, function(err) {
if (err) {
result.msg = 'error' , result.err = err;
throw (new Meteor.Error(500, 'Failed to save file.', err));
} else {
result.msg = 'The file ' + name + ' (' + encoding + ') was saved to ' + path , result.err = false;
}
fut.return(result);
});
return fut.wait();
}
})
@acidsound
Copy link

acidsound commented Jun 11, 2016

올라간 파일을 URL을 통해 읽으려면 webapp 혹은 picker package를 추가해서 path(이 경우엔 /_meteorfile/ )을 resopnse 에 넘겨줘야 합니다.
Picker를 사용하면

var path = '/_meteorfile/';
Picker.route('/upload/:file', function(params, req, res, next) {
  res.end(Meteor.wrapAsync(require('fs').readFile)(path+params.file);
});

혹은 meteor add webapp 해서

var path = '/_meteorfile';
WebApp.connectHandlers
  .use('/uploads', function(req,res,next) {
  res.writeHead(200);
  res.end(Meteor.wrapAsync(require('fs').readFile)(path+req.url));
});

요런 걸 추가해서 읽을 수 있도록 해줍니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment