node.js - 在jade中快速上传图片并查看

标签 node.js express pug

我正在尝试上传图像并以 express 方式显示它。 我将我的应用程序配置为在“公共(public)/图像”中上传

  app.use(express.bodyParser({ keepExtensions: true, uploadDir: './public/images' }));

上传进展顺利,但我找不到如何在我的 Jade 模板中显示上传的图像。我从 req.files 对象获得的图像路径类似于“public/images/imagename.jpg”,但我可以看到图像的唯一方法是在这样的 url 中:

http://localhost:3000/images/imagename.jpg

有没有办法从 req.files 中删除“public”参数,或者还有其他解决方案吗? 谢谢大家!

编辑:

好的,谢谢。但我的问题是关于在 Jade 模板中显示图像。我添加了这一行:

app.use('/public/images/', express.static(__dirname + '/public/images/'));

现在我可以访问该目录中的文件了。但我无法在我的 Jade 模板中显示它们。当我尝试这个时(使用 foto_path === req.files.image.path):

img(src= #{material.foto_path})

我得到这个网址:

http://localhost:3000/undefinedpublic/images/b1ce29f40ac7692ac62637e42f0f9128.jpgundefined

“未定义”有什么用?

谢谢!!

最佳答案

您需要知道 Express 配置您的公共(public)目录与 Apache 等其他传统服务器略有不同。我想为了显示静态资源,你的行看起来像这样:

app.use(express.static(__dirname + '/public'));

这将是您的应用中唯一可公开查看的文件夹。这就是为什么 Express 觉得在 url 中添加目录名称是多余的。 该网址并不反射(reflect)您的实际文件夹结构。

但是 req.files 确实显示了实际路径,以便您可以在应用程序中操作它,否则它在其他地方将无法使用。我的解决方案是直接引用 src = '/images/imageName.jpg'于 Jade 。您必须将实际的图像名称作为参数传递。或者,您可以从 req 中删除“公共(public)”部分并传递它。

关于node.js - 在jade中快速上传图片并查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12251302/

相关文章:

javascript - node.js 中的事件循环是什么意思? javascript 事件循环或 libuv 事件循环?

ruby - nodeJs 中的 Redis-pubsub,执行 "HGET"命令

javascript - Express + bodyParser.json() + Postman,req.body为空

javascript - 从浏览器检索数据到 JavaScript

javascript - 如何选择具有自定义文件结尾的任意层深度的所有文件夹和子文件夹?

angularjs - 将访问 token 添加到 Angular js 中的每个请求 header

javascript - 如何绕过express的错误处理

jquery - nodejs express, ajax 发布 w/jquery 并接收响应

node.js - 使用 Angular 时有没有办法从服务器端加载部分 View ?

ajax - 在 Express.js 中重定向后 Jade html 未更新