Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用express和nodejs从localhost到localhost获取图像_Node.js_Angular_Express_Http - Fatal编程技术网

Node.js 使用express和nodejs从localhost到localhost获取图像

Node.js 使用express和nodejs从localhost到localhost获取图像,node.js,angular,express,http,Node.js,Angular,Express,Http,我正在用NodeJs和Angular构建一个应用程序 服务器在上运行 并且应用程序可以运行 我有一个端点,它看起来像这样 我使用它来检索所有用户 返回的集合具有如下键{photo:myphoto.jpg} 当我循环数据集时,我希望以这种方式渲染图像 <img src="{{ url }}/uploads/users/{{ user.photo }}" alt="{{ user.name }} {{ user.last_name }}" class="img-fluid shad

我正在用NodeJs和Angular构建一个应用程序

服务器在上运行

并且应用程序可以运行

我有一个端点,它看起来像这样 我使用它来检索所有用户

返回的集合具有如下键{photo:myphoto.jpg}

当我循环数据集时,我希望以这种方式渲染图像

  <img src="{{ url }}/uploads/users/{{ user.photo }}" alt="{{ user.name }} {{ user.last_name }}"
    class="img-fluid shadow-sm avatar100 ml-auto mr-auto d-block rounded-circle">
其中url为,user.photo为myphoto.jpg

完整的路线是http://localhost:9000/uploads/users/myfoto.jpg 照片已托管,但服务器正在抛出错误

无法获取/uploads/users/myfoto.jpg

我认为,服务器将URL解释为API路由,并且显然没有在路由文件中声明

我只想检索图像,我怎么能这样做


我不知道我可以在这里显示代码的哪一部分。路线?前端?项目结构?告诉我你需要什么

使用Express,你必须创建一个路由来处理你的图像URL。默认情况下,Express或内置node.js web服务器不提供任何文件。因此,只有当您为特定URL创建处理程序并对该处理程序进行编程以交付所需文件时,它才会为文件提供服务

如果图像直接位于文件系统中,且URL基本文件名与服务器文件系统中的实际文件名匹配,则可以使用express.static创建一条路由,为所有图像提供服务

例如,您可以像这样使用express.static:

 app.use("/uploads/users", express.static("/uploads/users"));
这将允许从以下位置请求URL:

http://localhost:9000/uploads/users/myphoto.jpg
从位于的服务器端文件系统自动提供服务

/uploads/users/myphoto.jpg
如果子目录也在URL中,它同样适用于同一目录中的任何其他匹配名称,甚至该目录的子目录

通常,您不希望将内部路径名(例如/uploads/users)一直显示回用户的HTML页面。因此,您可以在HTML页面中执行此操作:

<img src="/images/myphoto.jpg">

这将接受以/images路径开始的任何http请求,并在服务器上的/uploads/users中查找匹配的文件名,从而不会向客户端公开服务器目录结构的内部内容。它创建了一个抽象/图像URL的概念,您的服务器可以处理并从存储在服务器上的任何位置获取图像。

您不能直接为任何文件提供服务,您必须定义路由或将其作为静态文件提供。您应该选中express静态文件服务。卡布oom@ShivamMishra谢谢你,老师,如果你能把它设为答案,我投票赞成
 app.use("/images", express.static("/uploads/users"));