第一次请求 returns 503 刚刚将图片上传到 Meteor GridFS
First request returns 503 for just uploaded image to Meteor GridFS
谁能告诉我为什么会出现这个错误以及如何解决?
当我重新加载页面 (cmd+r) 时,图像请求工作正常。
来自浏览器控制台的错误:
http://xxxxx.meteor.com/cfs/files/images2/aEaqKMjLQZcDPHLS8503(服务不可用)
会发生什么:
- 图片已上传(gridFS)
- url 已添加到用户个人资料
- img src="{{imgsrc}}" 被重新更新,因此是一个 http 请求。
- 请求url正确但结果是503
- 正在重新加载页面,错误消失。
上传图片代码
Template.profileedit.events({
'change .myFileInput': function(event, template) {
var files = event.target.files;
for (var i = 0, ln = files.length; i < ln; i++) {
Images.insert(files[i], function (err, fileObj) {
var userId = Meteor.userId();
var imagesURL = {
"profile.image": "/cfs/files/images2/" + fileObj._id
};
Meteor.users.update(userId, {$set: imagesURL});
});
}
}
模板助手
Template.profileedit.helpers({
imgsrc: function() {
var user = Meteor.users.findOne({"_id" : Meteor.userId()});
return Meteor.user().profile.image;
}
});
HTML显示图像:
<template name="profileedit">
<img src="{{imgsrc}}" style="width:400px" >
</template>
其他
本地和 meteor.com 上的问题相同
不安全且自动发布处于活动状态(这只是学习步骤)
谢谢
杰斯帕
我认为您 运行 遇到了 Mongo 尚未准备好检索对象的问题。我的猜测是,反应性更新是在您的图像实际可用于检索之前发生的,但是当您点击刷新时,它已经存在并准备好被检索,这就是解决方法有效的原因。
有几种解决方法。例如:https://github.com/CollectionFS/Meteor-CollectionFS 基本上允许您设置一个 "Waiting" 图像,该图像将在您的文件未准备好时显示,并在您的图像设置为要检索时响应更新。您也可以自己执行此操作,同时显示您的实现。
谁能告诉我为什么会出现这个错误以及如何解决? 当我重新加载页面 (cmd+r) 时,图像请求工作正常。
来自浏览器控制台的错误:
http://xxxxx.meteor.com/cfs/files/images2/aEaqKMjLQZcDPHLS8503(服务不可用)
会发生什么:
- 图片已上传(gridFS)
- url 已添加到用户个人资料
- img src="{{imgsrc}}" 被重新更新,因此是一个 http 请求。
- 请求url正确但结果是503
- 正在重新加载页面,错误消失。
上传图片代码
Template.profileedit.events({
'change .myFileInput': function(event, template) {
var files = event.target.files;
for (var i = 0, ln = files.length; i < ln; i++) {
Images.insert(files[i], function (err, fileObj) {
var userId = Meteor.userId();
var imagesURL = {
"profile.image": "/cfs/files/images2/" + fileObj._id
};
Meteor.users.update(userId, {$set: imagesURL});
});
}
}
模板助手
Template.profileedit.helpers({
imgsrc: function() {
var user = Meteor.users.findOne({"_id" : Meteor.userId()});
return Meteor.user().profile.image;
}
});
HTML显示图像:
<template name="profileedit">
<img src="{{imgsrc}}" style="width:400px" >
</template>
其他
本地和 meteor.com 上的问题相同 不安全且自动发布处于活动状态(这只是学习步骤)
谢谢 杰斯帕
我认为您 运行 遇到了 Mongo 尚未准备好检索对象的问题。我的猜测是,反应性更新是在您的图像实际可用于检索之前发生的,但是当您点击刷新时,它已经存在并准备好被检索,这就是解决方法有效的原因。
有几种解决方法。例如:https://github.com/CollectionFS/Meteor-CollectionFS 基本上允许您设置一个 "Waiting" 图像,该图像将在您的文件未准备好时显示,并在您的图像设置为要检索时响应更新。您也可以自己执行此操作,同时显示您的实现。