我试图将我上传的图像显示给访问该应用程序的人。使用文件系统显示使用collectionfs上传的图像
我还没有从我的项目中删除包insecured
或autopublish
。
我有这样一个功能:
$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"})]
});
在我meteor mongo
控制台,当我做show.collections
我得到cfs.images.filerecord
它具有以下:
{
"_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
包。
我不熟悉角度。但是不会有任何花括号或什么让图像中的图像变成一个可变的循环?我是Blaze&React的家伙。如果听起来不错,请原谅我。 –
角度部分是正确的,据我所知。 – MrE
问题是你在哪里上传? Meteor将在公共文件夹中提供公共内容,因此如果您在该文件夹中上传图片,并且您在img标签中引用了正确的URL,则会在更新url时显示图片。现在,您可能会在开发模式中设置另一个典型问题,即当公用文件夹中的某些内容发生更改时,Meteor中重新加载的热代码会触发,因此您的应用程序在上传图像时可能会重新加载。 我不得不使用的技巧是上传到另一个文件夹,并从该文件夹中写入到服务器文件的路径。 – MrE