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