我正在尝试上传图片并以快递方式显示。 我将我的应用配置为上传到“公开/图片”
app.use(express.bodyParser({ keepExtensions: true, uploadDir: './public/images' }));
上传效果很好,但我找不到如何在我的jade模板中显示上传的图片。我从req.files对象获得的图像路径类似于'public / images / imagename.jpg',但我能看到图像的唯一方法就是这样的网址:
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
什么是'undefined'?
谢谢!
答案 0 :(得分:1)
您需要知道Express配置您的公共目录的方式与其他传统服务器(如Apache)略有不同。我想,对于显示静态资产,您的行看起来像这样:
app.use(express.static(__dirname + '/public'));
这将是您应用中唯一可公开查看的文件夹。这就是为什么Express发现将目录的名称添加到url是多余的。 该网址未反映您的实际文件夹结构。
但是req.files会显示实际路径,以便您可以在应用中操作它,否则它将无法在其他地方使用。我的解决方案是直接引用Jade中的src = '/images/imageName.jpg'
。您必须将实际图像名称作为参数传递。或者,您可以从req中删除“公共”部分并传递它。