我们现在有几个网站 都在推广 有一些图片 每个网站上都上传
本来是把图片存进文件夹 数据库记录路径 每个网站都用一个独立的数据库
这样一来 重复劳动很严重
如果把图片存进SQL 数据库 这样 多个网站 就可以共用那些图片了
有一些疑问不明白 请老师们解答下
1、SQL 的 image 类型 似乎不能存储很大的图片 我有一个97K 的 上传时就会出错
2、循环输出图片 怎么做?
response.ContentType = myDataReader["imgtype"].ToString();
Response.BinaryWrite((byte[])myDataReader["imgcontent"]);
这样输出的话 把原来网页上的东西都覆盖了
3、图片存进数据库 数据库大小的增长是怎么样呢?100K 的图片 会占用多大的数据库空间?
4、比如,一个网页要输出一百张图片 , 从数据库中读出 图片 速度怎么样?
希望做过这方面的老师们 给小弟解惑 谢谢
如果不存进数据库,有什么别的方法避免重复上传图片呢?
可以设置单独的图片服务器(就是新建一个站点),只需要把图片上传到这个站点并生成URL,就可以所有站共用啊
或者不新加站点,你只上传到其中一个站,其他站通过URL来引用图片也是可以的
惟一的问题是其他站如何获取到这个图片的URL:你上面既然可以把图片放到一个数据库然后其他网站调用此数据库,那么当然也可以把图片的URL存放到数据库里,其他站调用这个URL,这样就不用重复上传图片了
个人认为,这种做法比放图片到数据库效率要高出不少,处理起来也简单
你的几个问题的回答:
1、image类型可以存放大图片,image类型并不是行内存储,不受行大小限制,你的97K肯定没有问题,应该是哪里写错了,调试一下吧
2、不能直接修改Response.ContentType,这样将修改当前页面的类型,考虑建立单独文件来生成图片给页面调用
3、100K图片存放到数据库,数据库会增长100K多一点点,图片大小按实际大小存放,系统处理图片的开销会占用很少一部分字节,这个不成问题
4、比直接IO要慢不少,数据库压力也会变得比较大而影响其他正常数据读取,所以建议使用我上面的做法
image表示的是二进制映像,用来放图片完全没问题(但要把图片文件当作纯粹的二进制文件对待)。image列最多可存放2G的数据。
你遇到的错误很可能是上传时发生的错误。
你可以把你的图片放到一个专门的站点下,想必你们的图片数量也会很大的,希望你最好把图片归类放到不同的文件夹里,这样读取的时候相对会好很多。