アップロードした画像を、そのアプリケーションにアクセスした人に見せようとしています。ファイルシステムを使用して、コレクションファイルでアップロードした画像を表示する
私のプロジェクトからまだパッケージinsecured
またはautopublish
を削除していません。
私はこのような機能を持っている:次のように持っている私のmeteor mongo
コンソール、私はshow.collections
を行うとき、私はcfs.images.filerecord
を取得中
$scope.upload = (event) => {
var file = event; //assuming 1 file only
console.log(file);
if (!file) return;
Images.insert(file, function (err, fileObj) {
if (err) {
console.log(err);
} else {
console.log('success', fileObj);
}
});
}
私のローカルマシンに画像を記憶
Images = new FS.Collection("images", {
stores: [new FS.Store.FileSystem("images", {path: "/home/user/uploadedimages"})]
});
を:
{
"_id" : "yqEzEH2us7SZveDm2",
"original" : {
"name" : "Screenshot from 2016-05-11 14:38:59.png",
"updatedAt" : ISODate("2016-05-11T18:38:59.636Z"),
"size" : 607292,
"type" : "image/png"
},
"uploadedAt" : ISODate("2016-05-15T03:04:40.447Z"),
"copies" : {
"images" : {
"name" : "Screenshot from 2016-05-11 14:38:59.png",
"type" : "image/png",
"size" : 607292,
"key" : "images-yqEzEH2us7SZveDm2-Screenshot from 2016-05-11 14:38:59.png",
"updatedAt" : ISODate("2016-05-15T03:04:40Z"),
"createdAt" : ISODate("2016-05-15T03:04:40Z")
}
}
}
質問
アップロードされた画像をクライアントに表示する方法を教えてください。
私はあなたが
<div ng-repeat="image in images">
<img ng-src="{{image.url}}" width="400px" alt="">
</div>
ような何かを行うことを読んだ。しかし、これは、画像をレンダリングするか、まったく何も表示されません。私はまだautopublish
パッケージを流星から削除していないので、購読しないと配列を見ることができます。
私は角に慣れていません。 'image in images'を可変ループにするための中かっこなどはありませんか?私はBlaze&Reactの男です。それが騒ぎになるなら、私を許してください。 –
私が知る限り、角の部分は正しいです。 – MrE
質問はどこにアップロードしますか? Meteorはパブリックフォルダの公開コンテンツを提供します。そのフォルダに画像をアップロードし、imgタグで適切なURLを参照すると、URLが更新されると画像が表示されます。今、別の典型的な問題、devモードではおそらくencoutnerでしょう。これは、パブリックフォルダ内で何かが変わったときにMeteorトリガのホットコードがリロードされるため、画像がアップロードされるときにアプリケーションがリロードされる可能性が高いからです。 私が使用しなければならなかったトリックは、別のフォルダーにアップロードし、そのフォルダーからサーバーファイルへのルートを書き込むことです。 – MrE