关于在网站中图片入库和管理!

发布时间: 2007-01-24 11:37    作者: 未知    来源: 未知    浏览:    评论

本人有多年开发网站的经验,对图片的上传及管理一直感到十分头痛。最早以前是用FTP上传图片,但每次上传时,客户端都要下载插件。到后来的无组件上传,虽然解决了无客户端,但图片在网站上的管理显得有点零乱:
  1、放图片目录要有可写,可删除的权限。
  2、不能重名,所以要解决图片命名的方法。
  3、比如图片是为发部新闻时上传的,当要删除该条新闻时,要另写代码对图片进行删除。因为权限的关系有可能,删除不了或者删除时页面运行的速度受影响。
  4、还会图片很容易被别的网站,盗链。

所以,我认为将各模块中所上传的图片入库,集中管理是有好处的!
具体操作:新建一张表,用于专门存放图片的二进数据,一个自动加一的ID号。上传图片时,将图片的二进制数据入库后,然后得到该图片的ID号,在引用图片的记录只要记录下该ID号即可!

入库程序(以ASP为例):
demo1.asp
<%
'picBriny 为图片二进制数据。至于如何从表单中得到图片二进制数据,可以到网上查找无组件上传原理
'表名pic
'列名image 用于存放图片的二进制数据 
'列名ID 自动加一
rs.Open "pic",conn,1,3
rs.AddNew()
rs.Fields("image").AppendChunk picBriny
rs.Update
'在这里就可以得到图片的ID号:rs.Fields("ID")
rs.Close
%>
图片显示的页面:
demo2.html
<html>
<head></head>
<body>
显示库中ID为1的图片
<img src='http://www.webasp.net/article/15/demo3.asp?id=1'>
</body>
</html>
     
图片出库程序(以ASP为例):
demo3.asp
<%
id=Request("id")
rs.Open "select image from pic where id="&id,conn,1,1
Response.BinaryWrite rs("image").getChunk(7500000)
rec.close
%>

综上所述可以解决上面的问题!
1、图片放库后就脱离了目录,就不用理会权限问题!
2、图片在表中都有自己的ID号,不会有重名问题!
3、当引用图片的记录要被删除时,只需在库中多删除一条记录!
4、如要防止盗链只需在出库程序:demo3.asp 里加上验证即可!
5、方便了其它各种对图片的管理!

目前想到这么多,当然也带来一些问题:

对系统数据库的要求提高了,上传几M的图片时可能速度会受影响,当然系统性能好的话,强烈推荐使用这种方案。
代码比以前直接把图片放在目录下,复杂了!所以如果网站内图片用的地方不是很多的话,还是不要用这个方案!



TAG

Smile Big Smile Surprise Stick out tongue Wink Sad Tongue Tied Indifferent Crying Embarrassed Cool Angry Angel Devil [8-|] [:#] [:-*] [:^)] [<:o)] [|-)] Yes Beer Left Hug Music Star Time Snail Pizza Automobile Umbrella Computer Storm [mo] [8o|] [^o)] [+o(] [*-)] [8-)] Coffee No Drinks [Z] Right Hug Cake Broken Heart Gift Wilted Flower Movie Dog Idea Sleep Email Travel Paradise
呢称:

加粗 斜体 下划线 链接 图片 代码 邮件地址 引用 列表

最多只能输入100个字符

Tags

SQL 数据库 asp.net C# XML 控件 .NET教程 程序 事件 数据 安全 代码 Server 客户端 验证 数据库专栏 接口 文件 Oracle DataSet 函数 DataGrid 问题 .net return C#语言 JavaScript 服务 IIS 对象 语句 windows 继承 时间 web.config 设计 开发 参数 变量 解决 字符 ADO.net 环境 VB.Net语言 web 异常 工具 服务器 计算 实例 OLEDB Application VB Word WebService insert asp net 安装 记录

精华推荐

更多

精品下载

更多