Ich versuche, meine hochgeladenen Bilder zu den Leuten zu zeigen, die die App besuchen.Zeige hochgeladene Bilder mit collectionfs mit Dateisystem
Ich habe noch nicht die Pakete insecured
oder autopublish
aus meinem Projekt entfernt.
Ich habe eine Funktion wie diese:
$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);
}
});
}
, die das Bild in meinem lokalen Rechner
Images = new FS.Collection("images", {
stores: [new FS.Store.FileSystem("images", {path: "/home/user/uploadedimages"})]
});
in meiner meteor mongo
Konsole speichert, wenn ich show.collections
ich cfs.images.filerecord
erhalten, die Folgendes :
{
"_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")
}
}
}
FRAGE
Wie zeige ich die hochgeladenen Bilder auf dem Client an.
Ich habe gelesen, dass Sie etwas tun, wie
<div ng-repeat="image in images">
<img ng-src="{{image.url}}" width="400px" alt="">
</div>
Aber diese machen das Bild nicht oder irgendetwas zeigt überhaupt. Ich weiß, dass ich das Array ohne Abonnement sehen kann, weil ich das autopublish
Paket von Meteor immer noch nicht entfernt habe.
ich bin nicht vertraut mit eckigen. aber würde es keine geschweiften Klammern geben oder etwas, um 'Bild in Bildern' zu einer variablen Schleife zu machen? Ich bin Blaze & React. verzeih mir, wenn es sich anhört. –
der eckige Teil stimmt soweit ich das beurteilen kann. – MrE
Die Frage ist, wo laden Sie hoch? Meteor wird öffentliche Inhalte im öffentlichen Ordner bereitstellen. Wenn Sie also das Bild in diesen Ordner hochladen und Sie auf die richtige URL im img-Tag verweisen, wird das Bild angezeigt, wenn die URL aktualisiert wird. Jetzt werden Sie wahrscheinlich ein anderes typisches Problem im Entwicklungsmodus kennenlernen, nämlich dass der Hot-Code-Neuladen in Meteor ausgelöst wird, wenn sich etwas im öffentlichen Ordner ändert. Daher wird Ihre App wahrscheinlich neu geladen, wenn das Bild hochgeladen wird. Der Trick, den ich verwenden musste, ist das Hochladen in einen anderen Ordner und das Schreiben einer Route zu den Serverdateien aus diesem Ordner. – MrE