2007年02月02日
linux的chmod命令使用详解
2006-09-28 11:01
使用权限 : 所有使用者

使用方式 : chmod [-cfvR] [--help] [--version] mode file…

说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。

把计 :

mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]…][,...],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本

范例 :将档案 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt

将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt

将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt

将 ex1.py 设定为只有该档案拥有者可以执行 :
chmod u+x ex1.py

将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *

此外chmod也可以用数字来表示权限如 chmod 777 file
语法为:chmod abc file

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。

范例:
chmod a=rwx file


chmod 777 file

效果相同
chmod ug=rwx,o=x file


chmod 771 file

效果相同

若用chmod 4755 filename可使此程式具有root的权限
指令名称 : chown
使用权限 : root

使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file…

说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。

把计 :

user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)–help : 显示辅助说明–version : 显示版本

范例 :
将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :
chown jessie:users file1.txt

将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :
chmod -R lamport:users *
-rw——- (600) — 只有属主有读写权限。

-rw-r–r– (644) — 只有属主有读写权限;而属组用户和其他用户只有读权限。

-rwx—— (700) — 只有属主有读、写、执行权限。

-rwxr-xr-x (755) — 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。

-rwx–x–x (711) — 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。

-rw-rw-rw- (666) — 所有用户都有文件读、写权限。这种做法不可取。

-rwxrwxrwx (777) — 所有用户都有读、写、执行权限。更不可取的做法。

以下是对目录的两个普通设定:

drwx—— (700) – 只有属主可在目录中读、写。

drwxr-xr-x (755) – 所有用户可读该目录,但只有属主才能改变目录中的内容
suid的代表数字是4,比如4755的结果是-rwsr-xr-x
sgid的代表数字是2,比如6755的结果是-rwsr-sr-x
sticky位代表数字是1,比如7755的结果是-rwsr-sr-t

指令名称 : chown

  使用权限 : root

  使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file…

  说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。

  参数格式 :

  user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)

  -c : 若该档案拥有者确实已经更改,才显示其更改动作

  -f : 若该档案拥有者无法被更改也不要显示错误讯息

  -h : 只对于连结(link)进行变更,而非该 link 真正指向的档案

  -v : 显示拥有者变更的详细资料

  -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)

  –help : 显示辅助说明

  –version : 显示版本

  范例 :

  将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :

  chown jessie:users file1.txt

2006年11月27日

2006年10月27日

—————  输出和后退

<script language="javascript">
alert("错误~~ 请输入帐号!!");
location.href="javascript:history.back()"
</script> 

————— 输出并重定向

<script language="javascript">
alert("添加成功~~!!");
location.href="BookList.asp"
</script> 

—————- 内嵌一个页面并设置为可编辑

<script language="javascript">
     document.write (‘<iframe src="text.asp" id="message" width="550" height="250"></iframe>’)
      frames.message.document.designMode = "On";
</script> 

————— 检验复选框是否已选并提示

<script language="javascript">
function checkdata()
{
if (document.form1.viewhtml.checked == true)
 {
   alert("对不起,请取消“查看HTML源代码”后再添加!")
   document.form1.viewhtml.focus()
   return false
  }
}
</script> 

—————- 用JavaScript 在超连接中打开一个新窗口(可控制大小)

<a href=# onClick="javascript:window.open(‘Buy.asp?id=<% = rs("Id") %>’,”,’width=570,height=160,toolbar=no, status=no, menubar=no, resizable=yes, scrollbars=yes’);return false;">打开一个窗口</a>

1.让文字不停地滚动

  <MARQUEE>滚动文字</MARQUEE>

2.记录并显示网页的最后修改时间

  <script language=javascript>
  document.write("最后更新时间: " + document.lastModified + "")
  </script>

3.关闭当前窗口

  <a href="/"onClick="javascript:window.close();return false;">关闭窗口</a>

4.5秒后关闭当前页

  <script language="javascript">
  <!–
  setTimeout(‘window.close();’,5000);
  –>
  </script>

5.2秒后载入指定网页

  <head>
  <meta http-equiv="refresh" content="2;URL=http://你的网址">
  </head>

6.添加到收藏夹

  <Script Language="javascript">
  function bookmarkit()
  {
  window.external.addFavorite(‘http://你的网址’,'你的网站名称’)
  }
  if (document.all)document.write(‘<a href="#" onClick="bookmarkit()">加入收藏夹</a>’)
  </Script>

7.让超链接不显示下划线

  <style type="text/css">
  <!-
  a:link{text-decoration:none}
  a:hover{text-decoration:none}
  a:visited{text-decoration:none}
  ->
  </style>

8.让网页随意后退

       <a href="javascript :history.go(-X)">X</a>

          //把X换成你想要后退在页数
   //把“-”变成“+”就为前进

9.设置该页为首页

  <body bgcolor="#FFFFFF" text="#000000">
  <!– 网址:http://你的网址–>
  <a class="chlnk" style="cursor:hand" HREF
  onClick="this.style.behavior=’url(#default#homepage)’;
  this.setHomePage(‘你的网站名称);"><font color="000000" size="2" face="宋体">设为首页</font></a>
  </body>

10.节日倒计时

  <Script Language="javascript">
  var timedate= new Date("December 25,2003");
  var times="圣诞节";
  var now = new Date();
  var date = timedate.getTime() – now.getTime();
  var time = Math.floor(date / (1000 * 60 * 60 * 24));
  if (time >= 0)
  document.write("现在离"+times+"还有: "+time +"天")</Script>

11.单击按钮打印出当前页

  <Script Language="javascript">
  <!– Begin
  if (window.print) {
  document.write(‘<form>’
  + ‘<input type=button name=print value="打印本页" ‘
  + ‘onClick="javascript:window.print()"></form>’);
  }
  // End –>
  </Script>

12.单击按钮‘另存为’当前页

  <input type="button" name="Button" value="保存本页"
  onClick="document.all.button.ExecWB(4,1)">
  <object id="button"
  width=0
  height=0
  classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
  <embed width="0" height="0"></embed
  </object>

13.显示系统当前日期

  <script language=javascript>
  today=new Date();
  function date(){
  this.length=date.arguments.length
  for(var i=0;i<this.length;i++)
  this[i+1]=date.arguments }
  var d=new date("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
  document.write(
  "<font color=##000000 style=’font-size:9pt;font-family: 宋体’> ",
  today.getYear(),"年",today.getMonth()+1,"月",today.getDate(),"日",
  d[today.getDay()+1],"</font>" );
  </script>

14.不同时间段显示不同问候语

  <Script Language="javascript">
  <!–
  var text=""; day = new Date( ); time = day.getHours( );
  if (( time>=0) && (time < 7 ))
    text="夜猫子,要注意身体哦! "
  if (( time >= 7 ) && (time < 12))
    text="今天天气……哈哈哈,不去玩吗?"
  if (( time >= 12) && (time < 14))
    text="午休时间哦,朋友一定是不习惯午睡的吧?!"
  if (( time >=14) && (time < 18))
    text="下午茶的时间到了,休息一下吧! "
  if ((time >= 18) && (time <= 22))
    text="您又来了,可别和MM聊太久哦!"
  if ((time >= 22) && (time < 24))
    text="很晚了哦,注意休息呀!"
  document.write(text)
  //—>
  </Script>

15.水中倒影效果

  <img id="reflect" src="你自己的图片文件名" width="175" height="59">
  <script language="javascript">
  function f1()
  {
    setInterval("mdiv.filters.wave.phase+=10",100);
  }
  if (document.all)
  {
    document.write(‘<img id=mdiv src="’+document.all.reflect.src+’"
    style="filter:wave(strength=3,freq=3,phase=0,lightstrength=30) blur() flipv()">’)
    window.onload=f1
  }
  </script>

16.慢慢变大的窗口

  <Script Language="javascript">
  <!–
  var Windowsheight=100
  var Windowswidth=100
  var numx=5
  function openwindow(thelocation){
  temploc=thelocation
  if
  (!(window.resizeTo&&document.all)&&!(window.resizeTo&&document.getElementById))
  {
    window.open(thelocation)
    return
  }
  windowsize=window.open("","","scrollbars")
  windowsize.moveTo(0,0)
  windowsize.resizeTo(100,100)
  tenumxt()
  }
  function tenumxt(){
  if (Windowsheight>=screen.availHeight-3)
    numx=0
  windowsize.resizeBy(5,numx)
  Windowsheight+=5
  Windowswidth+=5
  if (Windowswidth>=screen.width-5)
  {
    windowsize.location=temploc
    Windowsheight=100
    Windowswidth=100
    numx=5
    return
  }
  setTimeout("tenumxt()",50)
  }
  //–>
  </script>
  <p><a href="javascript:openwindow(http://www.xxx.com)">进入</a>

17.改变IE地址栏的IE图标

  我们要先做一个16*16的icon(图标文件),保存为index.ico。把这个图标文件上传到根目录下并在首页<head></head>之间加上如下代码:
          <link REL = "Shortcut Icon" href="index.ico">

18.鼠标指向时弹出信息框
  <body>
  <a href onmouseover="alert(‘弹出信息!’)">显示的链接文字</a>
        </body>

19.单击鼠标右键弹出添加收藏夹对话框
  <body>
  <script Language=javascript>
  if (document.all)
  document.body.onmousedown=new function("if (event.button==2||event.button==3)
  window.external.addFavorite(‘您的网址’,'您的网站名称)")
  </script>
        </body>

20.离开网页时和加载网站时提示你将本站加入收藏夹

  可以很大的加大的网站的访问量。

  一、在网页的

  二、在网页中的  标记中加入下面的代码:

  onunload=favorate()

  当然如果你想在网页载入时提示只需要把

  上面的onunload=favorate()改成onload=favorate()

21.JS制作网页标题栏滚动信息的显示:

将下面的代码copy到网页的<head>和</head>中.

<SCRIPT LANGUAGE=JAVASCRIPT>
<!–
var msg = "蓝色空间";
var speed = 300;
var msgud = " " + msg;
function titleScroll() {
if (msgud.length msgud = msgud.substring(1, msgud.length);
document.title = msgud.substring(0, msg.length);
window.setTimeout("titleScroll()", speed);
}
–>
</SCRIPT>

在网页的BODY中加入下面的代码:

<BODY onload="window.setTimeout(‘titleScroll()’, 500)">

22.JS状态栏信息分行显示: 
 
将下面的代码copy到网页的<head>和</head>中.

<SCRIPT LANGUAGE=JAVASCRIPT>
<!–
function makeArray(n) {
this.length = n;
}
function stopBanner() {
if (bannerRunning)
clearTimeout(timerID);
bannerRunning = false;
}
function startBanner() {
stopBanner();
showBanner();
} function showBanner() {
var text = ar[currentMessage];
if (offset < text.length) {
if (text.charAt(offset) == " ")
offset++;
var partialMessage = text.substring(0, offset + 1);
window.status = partialMessage;
offset++;
timerID = setTimeout("showBanner()", speed);
bannerRunning = true;
} else {
offset = 0;
currentMessage++;
if (currentMessage == arlength)
currentMessage = 0;
timerID = setTimeout("showBanner()", pause);
bannerRunning = true;
}
}
var speed = 100
var pause = 1000
var timerID = null;
var bannerRunning = false;
var currentMessage = 0;
var offset = 0;
var arlength = 3;
var ar = new makeArray(arlength);
ar[0] = "蓝色空间";
ar[1] = "欢迎你的光临";
ar[2] = "有建议请联系V-蓝动力";
–>
</SCRIPT>

在网页的BODY中加入下面的代码:

<BODY onload=startBanner()>

23. 可以在收藏夹中显示出你的图标

      <link rel="Bookmark" href="favicon.ico">

24. 永远都会带着框架 

<script language="javascript"><!–
if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页
// –></script>

25. 最小化、最大化、关闭窗口

<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" value="Close"></OBJECT>

<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE

26. TEXTAREA自适应文字行数的多少

<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">
</textarea>

27. 检测某个网站的链接速度:


把如下代码加入<body>区域中:
<script language=javascript>
tim=1
setInterval("tim++",100)
b=1

var autourl=new Array()
autourl[1]="www.njcatv.net"
autourl[2]="javacool.3322.net"
autourl[3]="www.sina.com.cn"
autourl[4]="www.nuaa.edu.cn"
autourl[5]="www.cctv.com"

function butt(){
document.write("<form name=autof>")
for(var i=1;i<autourl.length;i++)
document.write("<input type=text name=txt"+i+" size=10 value=测试中……> =》<input type=text name=url"+i+" size=40> =》<input type=button value=GO onclick=window.open(this.form.url"+i+".value)><br/>")
document.write("<input type=submit value=刷新></form>")
}
butt()
function auto(url){
document.forms[0]["url"+b].value=url
if(tim>200)
{document.forms[0]["txt"+b].value="链接超时"}
else
{document.forms[0]["txt"+b].value="时间"+tim/10+"秒"}
b++
}
function run(){for(var i=1;i<autourl.length;i++)document.write("<img src=http://"+autourl[i]+"/"+Math.random()+" width=1 height=1 onerror=auto(
http://";;+autourl[i]+"’)>")}
run()</script>

28. 如何改变链接的鼠标形状 

只需在链接上加上这一代码就行的了 
或者跟上面的用CSS写也行 

style="cursor:hand"       style="cursor:crosshair" 
style="cursor:text"       style="cursor:wait" 
style="cursor:move"       style="cursor:help" 
style="cursor:e-resize"     style="cursor:n-resize" 
style="cursor:nw-resize"     style="cursor:w-resize" 
style="cursor:s-resize"     style="cursor:se-resize" 
style="cursor:sw-resize" 
以上代码你只需要加到连接或是页面的STYLE区里就可以实现鼠标多样化。 

29.COOKIE脚本记录,有很大的用处。

function get_cookie(Name) { 
var search = Name + "=" 
var returnvalue = ""; 
if (documents.cookie.length > 0) { 
offset = documents.cookie.indexOf(search) 
if (offset != -1) { // if cookie exists 
offset += search.length 
// set index of beginning of value 
end = documents.cookie.indexOf(";", offset); 
// set index of end of cookie value 
if (end == -1) 
end = documents.cookie.length; 
returnvalue=unescape(documents.cookie.substring(offset, end)) 


return returnvalue

function loadpopup(){ 
if (get_cookie(‘popped’)==”){ 
openpopup() 
documents.cookie="popped=yes" 



说明:以上是JS代码,请自己加起始符和结束符

2006年10月25日

一、用嵌套表格

  用两个表格嵌套,外层的表格的长与宽比里层的多出2px,并设置对齐属性为水平居中、垂直居中,然后把外层表格的背景设为你需要的边框颜色,里层表格背景设为与网页背景相同,这样就实现我们的愿望了,实例如下:

  <table cellspacing="0" cellpadding="0" bgcolor="#000000" width="32" height="32" border="0">
  <tr>
  <td align="center">
  <table cellspacing="0" cellpadding="0" bgcolor="#ffffff" width="30" height="30" border="0">
  <tr>
  <td> </td>
  </tr>
  </td>
  </tr>
  </table>

  二、设置亮、暗边框颜色

  表格有亮边框(bordercolorlight)和暗边框(bordercolordark)两个属性,把表格边框(border)设为1px,亮边框(bordercolorlight)设为背景色,暗边框(bordercolordark)设为你需要的实际边框颜色就可以了,实列如下:
  
  <table border="1" cellpadding="0" cellspacing="0" width="32" height="32" bordercolorlight="#000000" bordercolordark="#FFFFFF">
  <tr>
  <td> </td>
  </tr>
  </table>

    三、用CSS定义(一)

  代码为:
  style="border-collapse: collapse"

  实例如下:

  <table border="1" cellspacing="0" width="32" height="32" style="border-collapse: collapse" bordercolor="#000000" cellpadding="0">
  <tr>
  <td> </td>
  </tr>
  </table>

  如果你用过Frontpage xp,你会发现,在Frontpage xp中定义的表格默认的设置就是用CSS定义过了的。

  四、用CSS定义(二)

  代码为:
  style="border: 1px solid #000000;"

  实例如下:

  <table cellspacing="1" width="32" height="32" style="border: 1px solid #000000; ">
  <tr>
  <td> </td>
  </tr>
  </table>

  有一点一定要注意:这时候不要再设置表格边框(border)、亮边框(bordercolorlight)和暗边框(bordercolordark)属性,否则不会出现预想的结果。

2006年09月26日

1,WITH TEMPLET意思是,生成的页面架构将采用某个已设定的模板,在此之前我的一篇教程中介绍过,希望各位在看本教程之前对ASP采用模板应熟悉下。(当然,不看也没有问题,本教程同样会提及精华部分的:)

2,ASP2HTML。不要我再说ASP转变成HTML的好处了吧,呵呵,其中最值得知道的就是:静态HTML页和动态页对服务器的要求承受能力小得多,同样,静态HTML搜索几率远比动态页面的多得多。

那么,我现在需要处理的技术问题就是:
1,如何实现模板技术?(先参看下上篇文章吧)
2,如何实现2HTML技术?
3,如何让模板技术与2HTML技术结合?

一、先进行技术原理分析

1,2HTML技术又该如何实现呢?如何使得ASP页面转变为HTML?一般都会想到FSO组件,因为该组件能新建任何文件格式。

那么其整个运行过程是怎么样的呢?
a,提供信息输入页面进行信息收集;
b,接受信息值先保存数据库,再FSO生成文件;
c,技术性完成任务,显示刚被创建的HTML文件的路径地址。

该技术的实现过程中有如下几个难点:

i,FSO生成的文件是直接放在一个大文件夹下,还是单独放在某个每日更新的子文件夹中?可能表述不准确,这样理解吧:相信通过FSO生成的文件随着时间的推移,文件会越来越多,管理也会越来越乱……通常你可能看到一些地址诸如 http://www.xxx.com/a/2004-5-20/200405201111.html  可以分析得出应该是建立了当前日期的文件夹。这样,一天就是一个文件夹的页面内容,查看管理也就显得比较合理。

ii,我在试图通过以上方法建立文件夹的时候,又发现了第二个问题。第一次通过FSO建立以当前日期命名的文件夹,没有问题。当我有新的文件需要生成时,因为是同一个程序,所以,其又将会执行建立同样的文件夹。此时,FSO组件会发现该路径已存在……卡壳-_-! 继续处理,在首行添加代码:

 On Error Resume Next

嘿嘿,达到自欺欺人、掩耳盗铃的效果。

当然规矩的用法是判断文件夹的有无

<%
Set fso = Server.CreateObject("Scripting.FileSystemObject")
if (fso.FolderExists(Server.MapPath(folder))) then
‘判断如果存在就不做处理
else
‘判断如果不存在则建立新文件夹
fso.CreateFolder(Server.MapPath(folder))
end if
%>

iii,文件夹是建立了,文件该如何建立呢?主要也就是文件名的生成。当然这个就需要自己来写个函数,功能就是如何生成文件名:)

<%
function makefilename(fname)
fname = fname ’前fname为变量,后fname为函数参数引用
fname = replace(fname,"-","")
fname = replace(fname," ","") 
fname = replace(fname,":","")
fname = replace(fname,"PM","")
fname = replace(fname,"AM","")
fname = replace(fname,"上午","")
fname = replace(fname,"下午","")
makefilename = fname & ".html"
end function 
%>

引用函数则:
<%fname = makefilename(now())%>

其实嘛,就是以年月日时分秒命名的文件。

iv,最后,生成的文件该如何查看到?当然需要把生成文件的路径保存的数据库中,并且添加到相对应的记录集中了。当然,这在下面的数据库设计时会提及到。

3,模板技术和2HTML技术的结合:将模板中特殊代码的值替换为从表单接受过来的值,完成模板功能;将最终替换过的所有模板代码生成HTML文件。需要注意的是:替换应能将输入数据的格式或者支持UBB的代码彻底改变。

二,再进行数据库设计

目前数据库的设计需要两个表:一个是存放模板数据的;一个是存放信息内容的。

1,建立新数据库asp2html.mdb

2,设计新数据库表c_moban
字段m_id(自动编号,主关键字);字段m_html(备注类型)。
并将下列完整的代码拷贝至m_html字段

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=hz">
<title>Cnbruce.Com | ASP2HTML TEST</title>
</head>
<body leftmargin="0" topmargin="0">
<table width="100%" height="100%" border="0" cellpadding="5" cellspacing="2">
  <tr align="right" bgcolor="#CCCCCC"> 
    <td height="20" colspan="2">$cntop$</td>
  </tr>
  <tr valign="top"> 
    <td width="25%" bgcolor="#e5e5e5">$cnleft$</td>
    <td width="74%" bgcolor="#f3f3f3">$cnright$</td>
  </tr>
</table>
</body>
</html>

3,设计新数据库表c_news

字段c_id:自动编号,主关键字
字段c_title:文本类型,保存文章标题
字段c_content:备注类型,保存文章内容
字段c_filepath:文本类型,保持生成文件的路径地址
字段c_time:日期/时间类型,默认值:Now()

三,页面需求设计

1,首先建立一个存放HTML页的文件夹

在文件同一目录下,建立文件夹newsfile,夹子内部主要存放生成的HTML页面,当然内部还会采用程序方式建立以日期命名的子文件夹,以方便浏览以及管理。

2,功能函数页面lib.asp

<%
‘生成文件名的函数
function makefilename(fname)
fname = fname
fname = replace(fname,"-","")
fname = replace(fname," ","") 
fname = replace(fname,":","")
fname = replace(fname,"PM","")
fname = replace(fname,"AM","")
fname = replace(fname,"上午","")
fname = replace(fname,"下午","")
makefilename=fname & ".shtml"
end function 

‘保持数据格式不变的函数
function HTMLEncode(fString)
fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")
fString = Replace(fString, CHR(32), " ")
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "<br>")
fString = Replace(fString, CHR(10), "<br>")
HTMLEncode = fString
end function
%>

3,数据库连接页面conn.asp
完成数据库的字符串连接方法

<%
set conn = Server.CreateObject("ADODB.Connection")
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("asp2html.mdb")
conn.Open connstr
%>

4,信息输入页面add.html
其实很简单:)就是表单嘛。注意action是跳转到addit.asp

<form action="addit.asp" method="post">
Title:<input type="text" name="c_title"><br>
Content:<br>
<textarea name="c_content" rows="8" cols="30"></textarea><br>
<input type="submit" value="Add">
<input type="reset" value="Reset">
</form>

5,处理数据功能显示页面addit.asp
首先是处理接受过来的数据,并将值写入数据库;接着将模板代码进行引用,并将其中特殊代码转换为接受值,最终通过FSO生成HTML页面。其中需要注意的还有,生成文件的路径地址保存至数据库表。

<%’容错处理
On Error Resume Next
%>

<!–#include file="conn.asp" –>
<!–#include file="lib.asp" –>

<%’接受传递值
c_title=request.form("c_title")
c_content=request.form("c_content")
%>

<%’生成HTML文件名,建立文件夹,指定文件路径
fname = makefilename(now())  ’makefilename为自定义函数 
folder = "newsfile/"&date()&"/"
filepath = folder&fname
%>

<%’将接受值及路径保持至数据库表
sql = "Select * from c_news"
Set rs = Server.CreateObject ("ADODB.Recordset")
rs.Open sql,conn,3,2
rs.addnew
rs("c_title")=c_title
rs("c_content")=c_content
rs("c_filepath")=filepath
rs.update
rs.close 
Set rs = Nothing
%>

<%’打开模板代码,并将其中特殊代码转变为接受值
sql1="select m_id,m_html from c_moban where m_id=1"
set rs1=Server.CreateObject("adodb.recordset")
rs1.open sql1,conn,1,1
mb_code=rs1("m_html")
rs1.close
set rs1=nothing
conn.close
set conn=nothing
c_title=htmlencode(c_title)
c_content=htmlencode(c_content)
mb_code=replace(mb_code,"$cntop$",now())
mb_code=replace(mb_code,"$cnleft$",c_title)
mb_code=replace(mb_code,"$cnright$",c_content)
%>

<%’生成HTML页面
Set fso = Server.CreateObject("Scripting.FileSystemObject")
fso.CreateFolder(Server.MapPath(folder))
Set fout = fso.CreateTextFile(Server.MapPath(filepath))
fout.WriteLine mb_code
fout.close
%>

文章添加成功,<a href="showit.asp">浏览</a>

6,显示数据库表记录,并做指向HTML页的链接:showit.asp

<!–#include file="conn.asp" –>
<!–#include file="lib.asp" –>
<%
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from c_news order by c_id desc"
rs.Open sql,conn,1,1
%>

<%
if rs.EOF and rs.BOF then
   response.write ("暂时还没有文章,<a href=add.html>添加</a>")
else
   Do Until rs.EOF
%>
        <table width="758" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#000000">
            <tr> 
            <td width="159" align="right" bordercolor="#CCCCCC" bgcolor="#CCCCCC"><%=rs("c_time")%></td>
            <td width="591" bordercolor="#f3f3f3" bgcolor="#f3f3f3"><a href=<%=rs("c_filepath")%> target="a_blank"><%=rs("c_title")%></a></td>
          </tr>
          <tr> 
            <td valign="top" align="right" bordercolor="#ececec" bgcolor="#ececec">[<a href=del.asp?c_id=<%=rs("c_id")%>>Dell</a>][<a href=change.asp?c_id=<%=rs("c_id")%>>Edit</a>][<a href="add.html">Add</a>]</td>
            <td valign="top" bordercolor="#FFFFFF" bgcolor="#FFFFFF"><%=htmlencode(rs("c_content"))%></td>
          </tr>
        </table><br>
<%
      rs.MoveNext
   Loop
end if
%>

<%
rs.close 
Set rs = Nothing
conn.close 
set conn=Nothing
%>

7,修改数据内容页change.asp

修改数据内容,同时也需要修改更新对应的HTML页面。修改其实就是重新生成文件,且文件名和之前一样,类似文件的覆盖。

<!–#include file="conn.asp" –>
<!–#include file="lib.asp" –>

<%id=request.querystring("c_id")%>

<%
if request.form("submit")="change" then
c_title=request.form("c_title")
c_content=request.form("c_content")
c_id=request.form("c_id")
c_filepath=request.form("c_filepath")

Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from c_news where c_id="&c_id
rs.Open sql,conn,3,2
rs("c_title")=c_title
rs("c_content")=c_content
rs("c_time")=now()
rs.update
rs.close 
Set rs = Nothing
%>

<%’打开模板代码,并将其中特殊代码转变为接受值
sql1="select m_id,m_html from c_moban where m_id=1"
set rs1=Server.CreateObject("adodb.recordset")
rs1.open sql1,conn,1,1
mb_code=rs1("m_html")
rs1.close
set rs1=nothing
conn.close
set conn=nothing
c_title=htmlencode(c_title)
c_content=htmlencode(c_content)
mb_code=replace(mb_code,"$cntop$",now())
mb_code=replace(mb_code,"$cnleft$",c_title)
mb_code=replace(mb_code,"$cnright$",c_content)
%>

<%’生成HTML页面
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fout = fso.CreateTextFile(Server.MapPath(c_filepath))
fout.WriteLine mb_code
fout.close
%>
<%response.redirect("showit.asp")%>
<%end if%>

<%
if id<>"" then
    Set rs = Server.CreateObject ("ADODB.Recordset")
    sql="select * from c_news where c_id="&id
    rs.Open sql,conn,1,1
    c_id=rs("c_id")
    c_filepath=rs("c_filepath")
    c_title=rs("c_title")
    c_content=rs("c_content")
end if
%>

<form action="change.asp" method="post">
Title:<input type="text" name="c_title" value=<%=c_title%>><br>
Content:<br>
<textarea name="c_content" rows="8" cols="30"><%=c_content%></textarea><br>
<input type="submit" value="change" name="submit">
<input type="reset" value="Reset">
<input name="c_id" type="hidden" value="<%=id%>">
<input name="c_filepath" type="hidden" value="<%=c_filepath%>">
</form>

8,删除记录页del.asp

同样!删除,除了删除数据库表中的记录,与其对应的HTML页面也需删除。代码如下:

<!–#include file="conn.asp" –>

<%
c_id = request.querystring("c_id")
sql = "Select * from c_news where c_id="&c_id
Set rs = Server.CreateObject ("ADODB.Recordset")
rs.Open sql,conn,2,3

filepath=rs("c_filepath")
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile(Server.mappath(filepath))
Set fso = nothing

rs.delete
rs.close 
Set rs = Nothing
conn.close
set conn=nothing
%>

<%response.redirect("showit.asp")%>

四,其它功能

模板管理页面:

不会每次都是打开数据库表进行增加或者修改模板代码吧,所以,管理代码的页面程序不能少了,自己捣鼓下应该很简单的。当然,之前管理员的登录认证程序就不在书中交代了:)还有,如果设计了多个模板,那么在发表信息的时候应添加模板选择单选框,同样在执行转换HTML时,SQL选择的不同m_id了。

<!–模块文件(template.htm)–>
<html>
<head>
<title>%TITLE%</title>
</head>
<body>
%CONTENT%
</body>
</html>

<!–TestTemplate.asp–>
<%
Dim fso,f
Dim strTitle,strContent,strOut
‘创建文件系统对象
Set fso=Server.CreateObject("Scripting.FileSystemObject")

‘打开网页模板文件,读取模板内容
Set f=fso.OpenTextFile(Server.MapPath("Template.htm"))
strOut=f.ReadAll
f.close

strTitle="这是生成的网页标题"
strContent="这是生成的网页内容"

‘用真实内容替换模板中的标记
strOut=Replace(strOut,"%TITLE%",strTitle)
strOut=Replace(strOut,"%CONTENT%",strContent)

‘创建要生成的静态页
Set f=fso.CreateTextFile(Server.MapPath("New.htm"),true)

‘写入网页内容
f.WriteLine strOut
f.close

Response.Write "生成静态页成功!"

‘释放文件系统对象
set f=Nothing
set fso=Nothing
%>

<% 
filename=year(now)&month(now)&day(now)&minute(now)&".shtml" ‘根据当前时间生成文件名
if request("body")<>"" then
set objfso = Server.CreateObject("Scripting.FileSystemObject") ‘创建一个fso实例
set htmout = objfso.CreateTextFile(server.mappath(""&filename&""))
htmout.write "<html><head><title>"
htmout.write request.form("title")
htmout.write "</title></head><body>新闻标题:"
htmout.write request.form("title")
htmout.write "<br>内容(body):"
htmout.write request.form("body")
htmout.write "</body></html>"
htmout.close
set htmout=nothing
set objfso=nothing
end if
%>
<form name="form1" method="post" action="">
  <table width="300"  border="0" align="center">
    <tr>
      <td align="right">标题:</td>
      <td colspan="2"><input name="title" size=18></td>
    </tr>
    <tr>
      <td align="right">内容:</td>
      <td colspan="2"><textarea name="body"></textarea></td>
    </tr>
    <tr>
      <td align="right">&nbsp;</td>
      <td><input type="submit" name="Submit" value="生成"></td>
      <td><a href="<%=filename%>" target="_blank">查看输出的文件</a></td>
    </tr>
  </table>
  <br>
  <br>
  <br>
</form>

2006年09月22日

一、营销策划书的格式

  一份完整较的营销策划书的构造分为三大部分:一是产品的市场状况分析,二是策划书正文內容。三是效果预测即方案的可行性与操作性。

  (一)市场状况分析

  要了解整个市场规模的大小以及敌我对比的情况,市场状况分析必须包含下列13项内容:

  (1)整个产品在当前市场的规模。

  (2)竞争品牌的销售量与销售额的比较分析。

  (3)竞争品牌市场占有率的比较分析。

  (4)消费者群体的年龄、性别、职业、学历、收入、家庭结构之市场目标分析。

  (5)各竞争品牌产品优缺点的比较分析。

  (6)各竞争品牌市场区域与产品定位的比较分析。

  (7)各竞争品牌广告费用与广告表现的比较分析。

  (8)各竞争品牌促销活动的比较分析。

  (9)各竞争品牌公关活动的比较分析。

  (10)竞争品牌订价策略的比较分析。

  (11)竞争品牌销售渠道的比较分析。

  (12)公司近年产品的财务损益分析。

  (13)公司产品的优劣与竞争品牌之间的优劣对比分析。

  (二)策划书正文

  一般的营销策划书正文由七大项构成,现简单扼要说明。

  (1)公司产品投入市场的政策

  策划者在拟定策划案之前,必须与公司的最高领导层就公司未来的经营方针与策略,做深入细致的沟通,以确定公司的主要方针政策。双方要研讨下面的细节;

  1。确定目标市场与产品定位。

  2。销售目标是扩大市场占有率还是追求利润。

  3。制定价格政策。

  4。确定销售方式。

  5。广告表现与广告预算。

  6。促销活动的重点与原则。

  7。公关活动的重点与原则。

  (2)企业的产品销售目标

  所谓销售目标,就是指公司的各种产品在一定期间内(通常为一年)必须实现的营业目标。

  销售目标量化有下列优点:

  为检验整个营销策划案的成败提供依据。

  为评估工作绩效目标提供依据。

  为拟定下一次销售目标提供基础。

  (3)产品的推广计划

  策划者拟定推广计划的目的,就是要协助实现销售目标。推广计划包括目标、策略、细部计划等三大部分。

  ①目标

  策划书必须明确地表示,为了实现整个营销策划案的销售目标,所希望达到的推广活动的目标。一般可分为:长期,中期与短期计划。

  ②策略

  决定推广计划的目标之后,接下来要拟定实现该目标的策略。推广计划的策略包括广告宣传策略、分销渠道运用策略、促销价格活动策略、公关活动策略等四大项。

  广告宣传策略:针对产品定位与目标消费群,决定方针表现的主题,利用报纸、杂志、电视、广播、传单、户外广告等。要选择何种媒体?各占多少比率?广告的视听率与接触率有多少?使产品的特色与卖点深入人心。

  分销渠道策略:当前的分销渠道的种类很多,企业要根据需要和可能选择适合自己的渠道进行,一般可分为:经销商和终端两大块,另有中间代理商德等形式。在选择中我们,遵循的主要原则是“有的放矢”,充分利用公司的有限的资源和力量。

促销价格策略:促销的对象,促销活动的种种方式,以及采取各种促销活动所希望达成的效果是什么。

  公关活动策略:公关的对象,公关活动的种种方式,以及举办各种公关活动所希望达到目的是什么。

  ③细部计划

  详细说明实施每一种策略所进行的细节。

  广告表现计划:报纸与杂志广告稿的设计(标题、文字、图案),电视广告的创意脚本、广播稿等。

  媒体运用计划:选择大众化还是专业化的报纸与杂志,还有刊登日期与版面大小等;电视与广播广告选择的节目时段与次数。另外,也要考虑CRP(总视听率)与CPM(广告信息传达到每千人平均之成本)

  促销活动计划:包括商品购买陈列、展览、示范、抽奖、赠送样品、品尝会、折扣等。

  公关活动计划:包括股东会、发布公司消息稿、公司内部刊物、员工联谊会、爱心活动、同传播媒体的联系等。

  (4)市场调查计划

  市场调查在营销策划案中是非常重要的内容。因为从市场调查所获得的市场资料与情报,是拟定营销策划案的重要依据。此外,前述第一部分市场状况分析中的12项资料,大都可通过市场调查获得,由此也显示出市场调查的重要。

  然而,市场调查常被高层领导人与策划书人员所忽视。许多企业每年投入大笔广告费,而不注意市场调查,这种错误的观念必须尽快转变。

  市场调查与推广计划一样,也包含了目标,策略以及细部计划三大项。

  (5)销售管理计划

  假如把营销策划案看成是一种陆海空联合作战的话,销售目标便是登陆的目的。市场调查计划是负责提供情报,推广计划是海空军掩护,而销售管理计划是陆军行动了,在情报的有效支援与强大海空军的掩护下,仍须领先陆军的攻城掠地,才能获得决定性的胜利。因此,销售管理计划的重要性不言而喻。销售管理计划包括销售主管和职员、销售计划、推销员的挑选与训练、激励推销员、推销员的薪酬制度(工资与奖金)等。

  (6)财务损益预估

  任何营销策划案所希望实现的销售目标,实际上就是要实现利润,而损益预估就是要在事前预估该产品的税前利润。只要把该产品的预期销售总额减去销售成本、营销费用(经销费用加管理费用)、推广费用后,即可获得该产品的税前利润。

  (7)方案的可行性与操作性分析。

  这是对该方案的落实政策的进一步过程,从某中意义上来说,他是计划执行的“前哨站”,一方面,对整个方案的可行性与操作性进行必要的事前分析,另一方面,对事后的执行进行必要的监督工作的铺垫。这也决定方案最后是否通过的重要的衡量标准之一。

2006年08月04日

    ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境。通过ASP我们可以创建功能强大的动态的WEB应用程序。ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件。
  在日常工作中,例如开发一个“商品网上销售系统”吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时在文字的旁边有该商品的图片加以说明,这样顾客就可以对该商品有个系统的了解,对推销商品有很大的帮助。所以我们在开发系统时当然就要加入图片处理模块,即如何把图片上传到服务器(图片可以放在WEB服务器上某一个文件夹里也可以放在SQL Server服务器里)和如何让上传的图片在浏览器端显示出来,这都是开发人员要考虑到的问题。

  上传图片到服务器有多种方法,可以使用文件上传组件也可以使用纯ASP代码来实现。在CSDN的WEB版ASP上经常有网友问这样的问题“如何利用ASP把图片上传到数据库里”,为了方便CSDN需要了解这方面的知识,这篇文章将详细讲解使用ASP上传图片的做法并给出代码,以飨读者。

  首先了解一下在程序中用到的各种对象及其语法:

  1) Request.BinaryRead()方法

  ● 使用Request.BinaryRead()方法可以获取提交的文件数据

  ● 语法

  VarReValue= Request.BinaryRead(number)

  变量VarReValue返回值保存从客户端读取到的二进制数据;

  参数number指明要从客户端读取的二进制数据量的大小。

  2) Response.BinaryWrite()方法

  ● 使用Response.BinaryWrite()方法可以从数据库中获取图片数据并显示到客户端的浏览器中。

  ● 语法

  Response.BinaryWrite data

  参数data是要写进客户端浏览器中的二进制数据包。

  3) AppendChunk方法

  ● AppendChunk方法的作用是将二进制数据追加到Field或Parameter对象。

  ● 语法

  object.AppendChunk data

  参数data为要追加到Field或Parameter对象中的数据包。

  4) GetChunk方法

  ● GetChunk方法返回二进制数据的内容。

  ● 语法

  object. GetChunk(size)

  参数size指明要返回二进制数据的长度,可以是长整型表达式。

  5) Request.TotalBytes方法

  ● Request.TotalBytes方法返回从客户端读取到的数据的字节数,这个值跟上面所提到的number相对应,可以大于或等于number值。

  ● 语法

  number= Request.TotalBytes

  大体了解了一些方法及其使用方法后,接下来我们就开始设计数据库和相关编写代码了。

  第一步:数据库的设计(以Ms SQL Server7为例):

  Create table img –创建用来存储图片的表,命名为img

  (

  id int identity(1,1) not null,

  img image

  )

  第二步:程序编写,其中省略了用户输入界面,这里只给出很重要的两个文件即图片上传处理(processimg.asp)和显示图片(ShowImg.asp)文件。

  1) processimg.asp文件代码:

  〈%

  Response.Buffer=True

  ImageSize=Request.TotalBytes ‘获取提交数据量的总字节数

  ImageData=Request.BinaryRead(ImageSize) ‘保存从客户端读取到的数据

  ‘优化读取到的二进制数据

  BnCrLf=chrB(13)&chr(10)

  Divider=LeftB(ImageData,Clng(InstrB(ImageData, BnCrLf))-1)

  Dstart=InstrB(ImageData, BnCrLf& BnCrLf)+4

  Dend=InstrB(Dstart+1, ImageData, Divider)- Dstart

  MyData=MidB(ImageData, Dstart, Dend)

  ‘创建对象实例

  Set imgConn=Server.CreateObject(“ADODB.Connection”)

  StrConn=”Driver={SQL Server};Server=ServerName;”& _

“Uid=xxxx;Pwd=xxxx;DataBase=DataBaseName”

  imgConn.open strConn

  Set Rs= Server.CreateObject(“ADODB.RecordSet”)

  Sql=”Select * From img Where id is null”
 
  Rs.open sql,imgConn,1,3

  ‘追加数据到数据库

  Rs.AddNew

  Rs(“img”).AppendChunk myData

  Rs.Update

  ‘关闭和释放对象

  Rs.close

  ImgConn.close

  Set Rs=Nothing

  Set ImgConn=Nothing

  %〉

  2) ShowImg.asp文件代码:

  〈%

  Response.Expires = 0

  Response.buffer=True

  Response.clear

  ‘创建对象实例

  Set imgConn=Server.CreateObject(“ADODB.Connection”)

  StrConn=”Driver={SQL Server};Server=ServerName;”& _

“Uid=xxxx;Pwd=xxxx;DataBase=DataBaseName”

  imgConn.open strConn

  Set Rs= Server.CreateObject(“ADODB.RecordSet”)

  Sql=”Select img From img Where id=1” 这里的id可以使用Request(“id”)获得

  Rs.open sql,imgConn,1,1

  Response.ContentType=”image/*”

  Response.BinaryWrite Rs.(“img”).GetChunk(7500000)

  ‘关闭和释放对象

  Rs.close

  ImgConn.close

  Set Rs=Nothing

  Set ImgConn=Nothing

  %〉

  至此,本文对如何使用ASP上传图片的原理和示例都讲完了,有什么不妥的地方请各位指正,谢谢!同时希望本文能够确实能为需要这方面帮助的网友提供实质性的帮助

    ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境。通过ASP我们可以创建功能强大的动态的WEB应用程序。ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件。
  在日常工作中,例如开发一个“商品网上销售系统”吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时在文字的旁边有该商品的图片加以说明,这样顾客就可以对该商品有个系统的了解,对推销商品有很大的帮助。所以我们在开发系统时当然就要加入图片处理模块,即如何把图片上传到服务器(图片可以放在WEB服务器上某一个文件夹里也可以放在SQL Server服务器里)和如何让上传的图片在浏览器端显示出来,这都是开发人员要考虑到的问题。

  上传图片到服务器有多种方法,可以使用文件上传组件也可以使用纯ASP代码来实现。在CSDN的WEB版ASP上经常有网友问这样的问题“如何利用ASP把图片上传到数据库里”,为了方便CSDN需要了解这方面的知识,这篇文章将详细讲解使用ASP上传图片的做法并给出代码,以飨读者。

  首先了解一下在程序中用到的各种对象及其语法:

  1) Request.BinaryRead()方法

  ● 使用Request.BinaryRead()方法可以获取提交的文件数据

  ● 语法

  VarReValue= Request.BinaryRead(number)

  变量VarReValue返回值保存从客户端读取到的二进制数据;

  参数number指明要从客户端读取的二进制数据量的大小。

  2) Response.BinaryWrite()方法

  ● 使用Response.BinaryWrite()方法可以从数据库中获取图片数据并显示到客户端的浏览器中。

  ● 语法

  Response.BinaryWrite data

  参数data是要写进客户端浏览器中的二进制数据包。

  3) AppendChunk方法

  ● AppendChunk方法的作用是将二进制数据追加到Field或Parameter对象。

  ● 语法

  object.AppendChunk data

  参数data为要追加到Field或Parameter对象中的数据包。

  4) GetChunk方法

  ● GetChunk方法返回二进制数据的内容。

  ● 语法

  object. GetChunk(size)

  参数size指明要返回二进制数据的长度,可以是长整型表达式。

  5) Request.TotalBytes方法

  ● Request.TotalBytes方法返回从客户端读取到的数据的字节数,这个值跟上面所提到的number相对应,可以大于或等于number值。

  ● 语法

  number= Request.TotalBytes

  大体了解了一些方法及其使用方法后,接下来我们就开始设计数据库和相关编写代码了。

  第一步:数据库的设计(以Ms SQL Server7为例):

  Create table img –创建用来存储图片的表,命名为img

  (

  id int identity(1,1) not null,

  img image

  )

  第二步:程序编写,其中省略了用户输入界面,这里只给出很重要的两个文件即图片上传处理(processimg.asp)和显示图片(ShowImg.asp)文件。

  1) processimg.asp文件代码:

  〈%

  Response.Buffer=True

  ImageSize=Request.TotalBytes ‘获取提交数据量的总字节数

  ImageData=Request.BinaryRead(ImageSize) ‘保存从客户端读取到的数据

  ‘优化读取到的二进制数据

  BnCrLf=chrB(13)&chr(10)

  Divider=LeftB(ImageData,Clng(InstrB(ImageData, BnCrLf))-1)

  Dstart=InstrB(ImageData, BnCrLf& BnCrLf)+4

  Dend=InstrB(Dstart+1, ImageData, Divider)- Dstart

  MyData=MidB(ImageData, Dstart, Dend)

  ‘创建对象实例

  Set imgConn=Server.CreateObject(“ADODB.Connection”)

  StrConn=”Driver={SQL Server};Server=ServerName;”& _

“Uid=xxxx;Pwd=xxxx;DataBase=DataBaseName”

  imgConn.open strConn

  Set Rs= Server.CreateObject(“ADODB.RecordSet”)

  Sql=”Select * From img Where id is null”
 
  Rs.open sql,imgConn,1,3

  ‘追加数据到数据库

  Rs.AddNew

  Rs(“img”).AppendChunk myData

  Rs.Update

  ‘关闭和释放对象

  Rs.close

  ImgConn.close

  Set Rs=Nothing

  Set ImgConn=Nothing

  %〉

  2) ShowImg.asp文件代码:

  〈%

  Response.Expires = 0

  Response.buffer=True

  Response.clear

  ‘创建对象实例

  Set imgConn=Server.CreateObject(“ADODB.Connection”)

  StrConn=”Driver={SQL Server};Server=ServerName;”& _

“Uid=xxxx;Pwd=xxxx;DataBase=DataBaseName”

  imgConn.open strConn

  Set Rs= Server.CreateObject(“ADODB.RecordSet”)

  Sql=”Select img From img Where id=1” 这里的id可以使用Request(“id”)获得

  Rs.open sql,imgConn,1,1

  Response.ContentType=”image/*”

  Response.BinaryWrite Rs.(“img”).GetChunk(7500000)

  ‘关闭和释放对象

  Rs.close

  ImgConn.close

  Set Rs=Nothing

  Set ImgConn=Nothing

  %〉

  至此,本文对如何使用ASP上传图片的原理和示例都讲完了,有什么不妥的地方请各位指正,谢谢!同时希望本文能够确实能为需要这方面帮助的网友提供实质性的帮助