重複の可能性: Meteor collectionfs 挿入サーバー側
GridFS を使用してファイルを保存する複数の画像コレクションがあります。コレクションの名前として「画像」を使用すると、すべて正常に動作しますが、名前を変更するとすぐに取得されますGET http://localhost:3000/cfs/files/PlayerImages/zo4Z7rnYLb32MLYkM/taylor.jpg 403 (Forbidden)
(そして、たとえば、これは機能します: http://localhost:3000/cfs/files/Images/7j9XAEebGctuivGhz/see-more.png )
これが私のコレクションの定義方法です。
function createImageCollection(name,transform){
var collectionName = name + 's';
var storeName = name + 'Store';
var options = {
filter: {
allow: {
contentTypes: ['image/*'],
extensions: ['png', 'PNG', 'jpg', 'JPG', 'jpeg', 'JPEG']
}
}
};
if (Meteor.isServer) {
storeOptions = {
path: process.env.PWD + "/public"
};
// only add the transform when graphicsmagick is available
if(gm.isAvailable && typeof transform === 'function'){
storeOptions.transformWrite = transform;
}
options.stores = [new FS.Store.GridFS(storeName,storeOptions)];
} else {
options.stores = [new FS.Store.GridFS(storeName)];
}
return new FS.Collection(collectionName,options);
}
// and finally create them
// THIS FIRST ONE WORKS JUST FINE
Images = createImageCollection('Image',imageResizeTimeline); // default resize is timeline, nothing bigger then that?
BackgroundImages = createImageCollection('BackgroundImage',imageResizeBackground);
PlayerImages = createImageCollection('PlayerImage',imageResizePlayer);
LogoImages = createImageCollection('LogoImage',imageResizeLogo);
また、各コレクションの許可/拒否ルールも追加しました。
var ImagePermissions = {
insert: function () {
return true;
},
update: function () {
return true;
},
download: function () {
return true;
},
remove: function () {
return false;
},
fetch: null
};
Images.allow(ImagePermissions);
PlayerImages.allow(ImagePermissions);
BackgroundImages.allow(ImagePermissions);
LogoImages.allow(ImagePermissions);
余談ですが、オートフォームを使用してフォームを生成していますが、「画像」が機能するため、そこに問題があるとは思いません。
このパスをいくつかの「ルーティング」または「構成」ファイルに追加する必要がありますか? デフォルトで「画像」が追加されているのでしょうか?(このプロジェクトは他の誰かによって設定されましたが、私は彼がしたことを見逃したとは思いません。)