javascript - NodeJS 文件未定义
问题描述
我试图在页面上显示我已经上传的图像/(图像),但它说文件未定义。
app.get('/profile',(req,res) =>{
gfs.files.find().toArray((err, files) => {
// Check if files
if (!files || files.length === 0) {
res.render('profile', {files: false})
} else
{
files.map(file => {
if(file.contentType === 'image/jpeg' || file.contentType === 'image/png'){
file.isImage = true;
} else {
file.isImage = false;
}
});
res.render('profile',{files: files})
}
});
我正在使用 EJS 视图引擎。profile.ejs 我的代码:
<div class="container">
<div class="row">
<div class="col-md-6 m-auto">
<form action="/upload" method="POST" enctype="multipart/form-data">
<div class="custom-file mb-3">
<input type="file" name="file" id="file" class="custom-file-input">
<label for="file" class="custom-file-label">Upload your image</label>
</div>
<input type="submit" value="Submit!" class="btn btn-primary btn-block">
</form>
<hr>
<% if(files){ %>
<% files.forEach(function(file) { %>
<div class="card card-body mb-3">
<% if(file.isImage) { %>
<img src="image/<%= file.filename %>" alt="">
<% } else { %>
<%= file.filename %>
<% } %>
</div>
<% }) %>
<% } else { %>
<p>No files to show</p>
<% } %>
</div>
</div>
我不明白为什么我总是收到文件未定义的错误。参考错误:C:\Users\User\Desktop\Oauth\views\profile.ejs:111
109| </form>
110| <hr>
111| <% if(files){ %>
files is not defined
解决方案
尝试检查回调中的 err 参数以开始调试。
app.get('/profile',(req,res) =>{
gfs.files.find().toArray((err, files) => {
if (err) {
console.log(err); // debug the error
return res.render('profile', {files: false});
}
// Check if files
if (!files || files.length === 0) {
res.render('profile', {files: false})
} else {
// map the files and set it to itself
files = files.map((file) => {
if(file.contentType == 'image/jpeg' || file.contentType == 'image/png'){
file.isImage = true;
} else {
file.isImage = false;
}
return file; // You forgot this.
});
res.render('profile',{files: files})
}
});
推荐阅读
- amazon-web-services - AWS Cloudformation 有条件地创建资源
- wpf - 无法设置未知成员 'System.Windows.Controls.TextBox.IsReadOnly
- java - Java并发 - 如何在方法参数上同步
- scala - 如何使这些函数定义干燥?
- reactjs - 如何使用 React Recoil selectorFamily 存储查询结果?
- node.js - 如何在for循环内返回对象
- javascript - 定义一个常量,而不是将这个文字复制 3 次声纳
- javascript - JavaScript 邮件主题/消息自动填充
- c - 为什么变量地址不变-c编程
- ojalgo - ojalgo BUG:在 ojAlgo 中使用 ConvexSolver 时约束打破权重