2

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

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

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

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

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

编辑:

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

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

“未定义”有什么用?

谢谢!!

4

1 回答 1

1

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

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

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

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

于 2012-09-03T17:44:37.660 回答