Javascript Meteor中输入类型文件的默认值
我有一个输入类型的文件上传图像。我还想为它设置一个默认图像,这样,如果用户不上传任何文件,文件就会被保存/使用。如何做到这一点Javascript Meteor中输入类型文件的默认值,javascript,meteor,Javascript,Meteor,我有一个输入类型的文件上传图像。我还想为它设置一个默认图像,这样,如果用户不上传任何文件,文件就会被保存/使用。如何做到这一点 Template.modelMeta.events({ 'submit #uploader-form': function(e, t) { file = $('#desc-model-thumb') // id for input type = file var fsFile = new FS.File(e.target[2].f
Template.modelMeta.events({
'submit #uploader-form': function(e, t)
{
file = $('#desc-model-thumb') // id for input type = file
var fsFile = new FS.File(e.target[2].files[0]);
ThumbFiles.insert(fsFile,function(err,thumbFile) {
if (err) {
sAlert.error("No image or invalid image format selected", {effect: 'flip', onRouteClose: false, stack: false, timeout: 8000, position: 'top'});
} else {
sAlert.success("Image has been Uploaded", {effect: 'flip', onRouteClose: false, stack: false, timeout: 4000, position: 'top'});
ModelFiles.update(modelId, {$set: {name: filename, about: description, thumbnail:thumbFile._id}}, function(error, res) {
if (error) {
sAlert.error(error.reason);
} else {
sAlert.success("Data about model has been saved", {effect: 'flip', onRouteClose: false, stack: false, timeout: 4000, position: 'top'});
}
});
}
});
}
});
这是一个模板
<label for="filename" class ="input-head"> Model-Image </label>
<p class ="help-text"> An image that will be used as a thumbnail for your model, the preferred size is 500 X 300 </p>
<input class="form-control model-thumb" id="desc-model-thumb" name="modelThumb" type="file">
如果用户没有定义默认文件,我只会链接一个默认文件:
defaultSAlert = {
effect: 'flip',
onRouteClose: false,
stack: false,
timeout: 8000,
position: 'top'
}
function insertImage (fsFile, modelId, description) {
ThumbFiles.insert(fsFile,function(err,thumbFile) {
if (err) {
return sAlert.error("No image or invalid image format selected", defaultSAlert);
}
sAlert.success("Image has been Uploaded", defaultSAlert);
updateModelFiles({
_id: modelId,
thumbnail: thumbFile._id,
name: thumbFile.original.name,
description: description
})
});
}
function updateModelFiles (model) {
ModelFiles.update(modelId,
{
$set: {
name: filename,
about: description,
thumbnail: fileId
}
}, function(error, res) {
if (error) {
return sAlert.error(error.reason);
}
sAlert.success("Data about model has been saved", defaultSAlert);
}
);
}
Template.modelMeta.events({
'submit #uploader-form': function(e, t) {
file = $('#desc-model-thumb') // id for input type = file
if(file.files.length) {
insertImage(
new FS.File(file.files[0]),
undefined,
undefined
)
} else {
var defaultModel = ModelFiles.findOne({ $eq:{name: 'defualt.png'} })
defaultModel._id = undefined
updateModelFiles(defaultModel)
}
}
});
请注意,在调用
insertImage
函数时,我使用了undefined
两次。那是因为我不知道description
一个modelId
应该是什么。此外,我会尝试适当地缩进你的东西。它几乎不可读的方式,你张贴你的代码。并使用2个空格进行缩进。这是惯例。你能给这个问题再补充一点细节吗?你怎么知道用户是否已经上传了一张图片(是存储在她的个人资料中的链接)?我已经更新了我的帖子。请找人帮忙。好的,下次我会照顾好的,非常感谢。但是这样做之后,页面被引用,没有默认设置,甚至没有图像被上传。对不起,仍然有一些我以前没有发现的错误。我修好了。您是否替换了代码中未定义的s?是的,我替换了它们:(您可以看到我的编辑。和它的差异
defaultSAlert = {
effect: 'flip',
onRouteClose: false,
stack: false,
timeout: 8000,
position: 'top'
}
function insertImage (fsFile, modelId, description) {
ThumbFiles.insert(fsFile,function(err,thumbFile) {
if (err) {
return sAlert.error("No image or invalid image format selected", defaultSAlert);
}
sAlert.success("Image has been Uploaded", defaultSAlert);
updateModelFiles({
_id: modelId,
thumbnail: thumbFile._id,
name: thumbFile.original.name,
description: description
})
});
}
function updateModelFiles (model) {
ModelFiles.update(modelId,
{
$set: {
name: filename,
about: description,
thumbnail: fileId
}
}, function(error, res) {
if (error) {
return sAlert.error(error.reason);
}
sAlert.success("Data about model has been saved", defaultSAlert);
}
);
}
Template.modelMeta.events({
'submit #uploader-form': function(e, t) {
file = $('#desc-model-thumb') // id for input type = file
if(file.files.length) {
insertImage(
new FS.File(file.files[0]),
undefined,
undefined
)
} else {
var defaultModel = ModelFiles.findOne({ $eq:{name: 'defualt.png'} })
defaultModel._id = undefined
updateModelFiles(defaultModel)
}
}
});