ASP.NET WebForms疑问:文件夹无图片时为何Image Control仍显示图片?
问题说明
我用Visual Studio 2010编写了Folder_Code及图片加载代码,本地存储图片的文件夹中没有对应图片文件,但运行代码后,GridView和Image Control仍能正常显示图片。另外SQL中存储了文件路径与字节型DataFile字段。
想请教:为什么文件夹中无图片,GridView和Image Control却仍能显示图片?
原因解释
- 图片数据来自数据库的二进制存储:从SQL存储情况来看,图片是以字节型(
DataFile)的形式直接存在数据库中的,代码加载图片时是直接读取数据库里的二进制数据来渲染,而非读取本地文件夹的文件。只要数据库里的二进制图片数据完整,哪怕本地没有对应文件,控件也能正常显示。 - 代码逻辑优先调用数据库数据:如果你的代码逻辑是优先从数据库获取
DataFile的二进制流来生成图片,那不管本地文件夹是否有文件,都会直接使用数据库中的内容,自然能正常显示图片。 - 缓存机制导致的残留显示:如果之前本地文件夹存在过该图片,浏览器或者服务器可能已经缓存了这份图片资源。就算现在本地文件被删除,缓存里的资源仍会被调用,从而让控件显示图片。你可以尝试清空浏览器缓存、重启服务器后再测试,验证是否是缓存的问题。
内容的提问来源于stack exchange,提问作者tbquanganh
相关产品推荐
相关产品推荐

