【问题标题】:how to display image in angular saved on node server如何以保存在节点服务器上的角度显示图像
【发布时间】:2019-07-08 22:09:48
【问题描述】:

我在 localhost:3000 上运行了一个 nodejs 应用程序,我使用 multer 上传了图像,因此它们位于 ./uploads/ 文件夹中。在 locahost:4200 上运行的 Angular 应用程序中,我想检索这些图像。

在我的 for 循环中:

<tr *ngFor="let data of empData;let i=index">
    <td>{{i+1}}</td>
    <td>{{data.emp_name}}</td>
    <td><img src="./uploads/{{data.emp_image}}"></td>
</tr>

我在以下结果变量中有所有数据:

this.emp.viewData().subscribe(
  res => {
    this.empData = res;
  },
  err => {
    console.log(err);
  },
)

【问题讨论】:

  • 您必须在数据值之前附加文件夹或存储桶路径才能访问图像,例如 http(s)://localhost:8080/src/images/data.value
  • 你能解释更多或举个例子

标签: node.js angular


【解决方案1】:

除了 Software Person 的上述回答外,请确保将其包含在您的节点应用程序中,以使您能够访问 nodejs 应用程序中的上传目录。

const express   = require('express');
const app       = express();

app.use(express.static('uploads'));

快乐编码。

【讨论】:

  • 感谢您的回答,对我帮助很大。
【解决方案2】:

您可以包含完整的网址,例如

<tr *ngFor="let data of empData;let i=index">
    <td>{{i+1}}</td>
    <td>{{data.emp_name}}</td>
    <td><img src="http(s)://localhost:3000/uploads/{{data.emp_image}}"></td>
</tr>

或者更好的是你可以在组件中定义一个变量并像这样使用它:

<tr *ngFor="let data of empData;let i=index">
    <td>{{i+1}}</td>
    <td>{{data.emp_name}}</td>
    <td><img src="{{SERVER_UPLOAD_DIR}}/{{data.emp_image}}"></td>
</tr>

【讨论】:

  • 能否添加组件的代码并尝试在浏览器中访问 url,如果您可以通过这种方式访问​​它
  • 我通过浏览器访问了该网址,它给出的错误如下:Cannot GET /uploads/emp_img-1562410462956.png
  • 我猜是 404,这意味着您已将其上传到非公共文件夹。你能提供你的nodejs实现和你的文件夹结构吗?所以我可以给你一个解决方案(只需编辑你的原件)
  • 谢谢你,先生,我已经修好了。
猜你喜欢
  • 2018-06-02
  • 2018-12-05
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
相关资源
最近更新 更多