当前位置: 首页 > 知识库问答 >
问题:

如何在MEAN stack应用程序的组件Ts中从后端获取图像

沈伟
2023-03-14

我需要从backend/images文件夹中获取图像作为组件中的图像对象。ts文件。我可以从数据库中获取图像的路径。

this.productsService.getProduct(this.editId).subscribe(productData => {
    this.name = productData.name;
    this.code = productData.code;
    this.category = productData.category;
    this.description = productData.description;
    this.details = productData.details;
    this.editImagePaths = productData.imagePaths;
  });

我尝试通过http请求获取图像。

for (let i = 0; i < this.editImagePaths.length; i++) {


      this.http.get<File>(this.editImagePaths[i]).subscribe(value => {

        this.images.push(value);
      });
    }

图像是文件类型的数组。问题是http.get返回blob字符串,core.js给出以下错误;

果心js:6014错误HttpErrorResponse{headers:HttpHeaders,状态:200,状态文本:“OK”,url:http://localhost:3000/images/asd0-1575503057766.png“,确定:错误,…}错误:{错误:语法错误:意外标记� 在JSON中,JSON的位置0处。在XMLHtt处解析(),文本:“�巴布亚新几内亚↵↵ IHDR  I������PLTE�F��� *)…�LЙ�3 @��我�؈�ݝ�Y�(完)�B`�“}headers:HttpHeaders{normalizedNames:Map(0),lazyUpdate:null,lazyInit:ƒ}消息:“在对http://localhost:3000/images/asd0-1575503057766.png“名称:“HttpErrorResponse”确定:错误状态:200状态文本:“确定”url:http://localhost:3000/images/asd0-1575503057766.png“proto:HttpResponseBase

共有3个答案

詹联
2023-03-14

尝试更改响应类型为'blob'

this.httpClient.get(imageList, { responseType: 'blob' }).subscribe(value => {
   this.images.push(value);
});
马才
2023-03-14

首先,它取决于在数据库中以blob或URL/路径的形式存储图像的方式。但是,我建议在将图像上载到服务器上的文件夹时存储图像的路径。

现在,如果需要一个路径,只需使用正常的get请求或post请求获取服务器上映像的路径即可。

export class ComponentName{

products: any;

constructor(
 private service: ServiceComponent
){}

this.service.productList(values).subscribe(data => {
  this.product = data;
})

}

另外,如果你注意到我如何使用一个变量来存储所有的数据;类别,图像和其他。现在如果我想显示我的图像,我会这样做在我的component.html

<img *ngFor="let images of product.imagePaths" [src]="images">

总之,检查您如何存储数据以及如何发回数据。这很重要。我的模式只存储图像路径,即使是在一个数组中,并以json数组的形式检索图像。。。。。

孔硕
2023-03-14

您需要将响应解析为blob,而不是json

this.http.get<File>(this.editImagePaths[i], {responseType: 'blob'})
    .subscribe(value => this.images.push(value));
 类似资料:
  • 我尝试过各种各样的解决方案,从堆栈溢出没有运气。我想要什么。 我知道不同应用程序的包名 例如,我有一个包名。如何获取此应用程序图标并在ImageView中显示?

  • 这是我的选项2选项 但它给出了一个错误的说法 java.io.FileNotFoundException:C:\users\businesssupport\documents\netBeansProjects\InvoiceGenerator\resources\hemaslogo.jpg(系统找不到指定的路径)

  • 我已经从谷歌阅读了这个标准描述:https://developer.android.com/training/sharing/receive 在此之后,我更新了我的AndroidManifest.xml,以包括一个意图过滤器来接受来自其他应用程序的共享(对于各种哑剧类型)。 我可以将我的应用程序视为其他应用程序中的共享选项,当我在其他应用程序中选择一个文件(例如,照片应用程序中的图像文件)并选择与

  • 要获取请求URL,可以在堆栈溢出中找到以下方法。 第一种方法: 第二种方法: 第三种方法: 我不知道在spring boot应用程序中使用哪一个来获取请求URL。 如果我使用第三种方法,那么我是否需要在配置类中创建RequestContextListener的bean,如下所示?

  • 我正在处理使用通知侦听器服务类从通知中读取数据的应用程序。我已完成文本部分,但无法存储通知中收到的图像。 我想存储在WhatsApp应用程序中从通知中收到的图像。我已经尝试了堆栈溢出的所有解决方案,但没有得到任何解决方案。我已经尝试了<代码>通知。EXTRA_PICTURE但它总是返回null。 我见过许多应用程序这样做,但看起来我错过了一些东西。 因此,如果有人能以任何方式提供帮助,我们将不胜感

  • 我把我的应用放到Google Play,现在我做一些事情,比如添加新功能,新UI等,然后重新上传应用到Google Play。 所以我想,当用户启动应用程序时,如果有新的更新,显示一个对话框提醒用户,允许他们更新最新版本。 谷歌似乎没有提供任何API来获得应用版本,那么有什么解决方案可以做吗?