我的ASP.NET MVC应用程序将部署到一系列负载平衡的Web服务器上。我仍在解决的一个问题是如何处理动态上传的文件内容,例如用户上传的图像-显然,将它们保存在上载它们的服务器上将不允许它们从其他服务器访问负载均衡组。
目前,我正计划将它们保存到共享存储位置,特别是指向我们NAS上目录的UNC路径;但我不确定如何最好地检索这些文件以将其显示给客户端。我在想我需要编写某种自定义路由处理程序,以从服务器端不可通过Web访问的存储位置检索它们,然后将它们流回客户端。这似乎相对简单,但是我在如何开始在ASP.NET中解决这个问题上很挣扎。
我考虑过的另一个解决方案是在每个应用程序目录中创建一个虚拟目录,该目录指向网络目录。
我什至考虑过将文件上传到Amazon S3(通过文件上传处理代码)并使用CloudFront交付它们,但是我宁愿避免外部服务依赖性。
您推荐哪种方法,是否有建立最佳实践甚至现有的组件/库来完成这种事情?
在ASP.NET MVC中,您可以通过控制器操作来处理此问题,如下所示:
public class SharedImageController : Controller {
public ActionResult GetImage(String imageId) {
String uncPath = GetImageUncLocationFromId( imageId );
Response.ContentType = "image/jpeg"; // change as appropriate
return new FileResult( uncPath );
}
}
并在您的HTML中:
<img src="<%= Url.Action("GetImage", "SharedImage", new { imageId = "SomeImage.jpg" } %>" alt="Some descriptive text" />
如果您将经常使用它,则可以制作一个自定义的HtmlHelper扩展方法,以减少出错的可能性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句