2

/lib/collections/images.js

var imageStore = new FS.Store.FileSystem("images", {
  // what should the path be if I want to save to /public/assets?
  // this does not work
  path: "/assets/images/", 
  maxTries: 1
});

Images = new FS.Collection("images", {
  stores: [imageStore]
});

Images.deny({
  insert: function() {
    return false;
  },
  update: function() {
    return false;
  },
  remove: function() {
    return false;
  },
  download: function() {
    return false;
  }
});

Images.allow({
  insert: function() {
    return true;
  },
  update: function() {
    return true;
  },
  remove: function() {
    return true;
  },
  download: function() {
    return true;
  }
});

/client/test.html

<template name="test">

    <input type="file" name="myFileInput" class="myFileInput">

</template>

/client/test.js

Template.test.events({

  'change .myFileInput': function(event, template) {
    FS.Utility.eachFile(event, function(file) {
      Images.insert(file, function (err, fileObj) {
        if (err){
           // handle error
        } else {
           // handle success
        }
      });
    });
  },

});

パスについては、次を使用する場合:

path: "/public/assets/images",

エラー: EACCES、許可が拒否されました '/public'

path: "/assets/images",

エラー: EACCES、許可が拒否されました '/assets'

path: "~/assets/images",

これは機能しますが、イメージを/home/assets/imagesLinux マシンに保存します。パスは、Meteor プロジェクトとはまったく関係ありません。

4

3 に答える 3

5

/サイトのルートを表すものではありません。/システムのルートを表します。meteor アプリはユーザーとして実行されます。

あなたがしたいことは、相対パスを使用することです。collectionFSfs.write操作がアプリのルートから実行されていない可能性があります。したがって、代わりに使用できますpath: process.env.PWD + '/public/assets/images'

于 2015-07-17T15:34:45.697 に答える
0

使用できます

 var homeDir = process.env.HOMEPATH;
 tmpDir: homeDir + '/uploads/tmp'
于 2015-11-19T12:43:16.187 に答える