MVC里用FileResult来返回文件,它是一个抽象类,实际使用中可以用它的三个子类FilePathResult,FileContentResult和FileStreamResult。它们的结果都是一样的,只是读文件的方式不同。
FilePathResult通过传递文件路径(String)
FileContentResult通过传递文件内容(byte[])
FileStreamResult通过传递文件流(Stream)
显然,要显示文件系统的图片用FilePathResult最简单,而要显示在数据库的图片就用FileContentResult。
我们可以在一个Controller里写一个Action:
首先根据id从数据库获取图片,然后指定ContentType并返回一个FileContentResult。FileContentResult内部将图片数据写到response.OutputStream。 为了方便使用可以写一个辅助方法
然后在要用到图片的地方这样使用即可:
@Html.Image(Url.Action("ShowStructureGraph", "Project", new { id }), new { width = 750 }) 另外还有一种方式: @Html.Image("data:image/jpeg;base64," +System.Convert.ToBase64String( Model.StructureGraph) , new { width = 750 }) 这种方式直接把图片嵌入到Html里,减少了服务器请求次数。 不过这种方式不可以缓存图片;因为使用base64编码占用带宽会大一些。
本站技术原创栏目文章均为中睿原创或编译,转载请注明:文章来自中睿,本站保留追究责任的权利。