Node.js 使用express和nodejs从localhost到localhost获取图像
我正在用NodeJs和Angular构建一个应用程序 服务器在上运行 并且应用程序可以运行 我有一个端点,它看起来像这样 我使用它来检索所有用户 返回的集合具有如下键{photo:myphoto.jpg} 当我循环数据集时,我希望以这种方式渲染图像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
<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"));