我用c#创建了一个小型webapi,让我的用户上传图片。该方法如下所示:
public async Task<IActionResult> CreateXXX(ADto dto)
{
// Save the image in a docker volume
}
CreateXXX
方法将ADto
作为包含一些属性的参数,一个属于我的图像,base64编码。我在这里做的很简单:我解码图像然后,因为我的webapi服务托管在一个docker容器中,我将它保存在docker卷中。一切正常,我可以看到图像保存在我的主机上(我映射的卷)。
现在,我创建了一个get on webapi服务,将图像返回给客户端。同样,它是ADto
包含一些属性,一个在磁盘上我的图像的路径(我的码头 - 卷)。路径如下所示:/pictures/123456789.jpg
问题是:浏览器应该如何访问资源以显示图像?使用http://localhost:5001/pictures/123456789.jpg无效。 (localhost:5001是我的webapi托管的地方)。
答案 0 :(得分:2)
客户端浏览器永远无法访问您的本地文件系统。 URL有效的唯一方法是,如果您的Web服务器上有一个将传入请求映射到本地文件系统的处理程序。无论您的应用程序是在docker容器还是服务器中运行,都没有区别。
如果您使用IIS作为网络服务器,则可以创建虚拟目录并将其映射到文件系统上的图片目录。如果您使用Kestrel作为应用程序服务器,则需要实现处理程序以将传入的请求转换为图片文件。
您需要更具体地了解您使用的技术,否则无法进一步提供帮助。