【问题标题】:Express image upload and view in jade在jade中快速上传图片并查看
【发布时间】:2013-03-09 23:14:23
【问题描述】:

我正在尝试上传图片并以快递方式显示。 我将我的应用配置为在“public/images”中上传

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

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

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

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

编辑:

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

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

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

img(src= #{material.foto_path})

我得到这个网址:

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

“未定义”有什么用?

谢谢!!

【问题讨论】:

    标签: node.js express pug


    【解决方案1】:

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

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

    这将是您应用中唯一可公开查看的文件夹。这就是为什么 Express 认为将目录名称添加到 url 是多余的。 网址不反映您的实际文件夹结构。

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

    【讨论】:

    • 好的,谢谢。但我的问题是关于在玉模板中显示图像。请参阅上面的编辑。
    • 嗯,是的,req.files 必须显示“公共”部分,否则它将无法在您的应用程序的其他地方使用。您可以在 Jade 中直接引用实际 url:src = '/images/imagename.jpg'。我会将其添加到答案中。
    • 问题是文件名来自上传表单。我需要从中找到正确的道路。
    猜你喜欢
    • 2013-04-23
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2012-07-04
    • 2017-05-20
    相关资源
    最近更新 更多