各位大哥,人命关天,做不出就要……
sign
help me

解决方案 »

  1.   

    100分给我我一定帮你借解决(因为我已经解决了数据库图像存储与页面显示,不过是在sql server 数据库中的)
    [email protected]
      

  2.   

    到www.dev-club.com上去搜索一下,那里面有几篇这样的文章!
    无组件图片与文本同步存入数据库的最简单的办法发表版主:pccat
    发表时间:2001-9-11 12:43:59来自:asphouses
    一:前言  首先,没有料到图片与文本的上传会引起这么大的注意。上一篇贴子(Id=435906)贴出后,有不少人来信说看不
    懂。或
    是仍然不能实现。我就以一种完全简单的手法。完成无组件的文本与图片上传数据库所有过程。希望能帮助所有对
    此有疑
    问的网友。二:准备工作    按照惯例,我先将我的测试环境告诉大家。
        系统:Win98se + pws + asp 
        编程环境:Visual Interdev 6.0 
        数据库:Access2000 (因为网友问的最多的都是Access2000的问题。)
        建一个库:access2000中,先建好一个Test.mdb的数据库。具体有四个字段。
        id    ¦  text1 ¦ text2 ¦ img
      自动编号    文本    文本  OLE对象        ’如果是sql server 则选择(image即可)三:Are you ready ,Go!!!3-1.建上传表单:
        我们知道,图像与文本是两种不同制式的文件(二进制,流式文本)而如果要同一表单提交的话,(file格式
    提交)则
    我们获取时就不能用原来的方法request.form而必须用equest.TotalBytes来获得所有的提交资料。但这时两种格
    式的文件
    混合在一起比较难分。我的上一贴已经告诉大家用二进制的方法来分开这些资料。但十分麻烦,要用到许多二进值
    的函
    数,所以许多网友来信问我有没有更简单的方法,好。我可以告诉大家,有!而且保证下面的方法保证一学就会。
    (这种方
    法很另类但伟人说过白猫,黑猫。能上网的就是好猫!)upload.asp(具体代码如下)
        
    <% @ language=vbscript %>
    <html>
    <head>
    <meta name="VI60_defaultClientScript" content="VBScript">
    <title> File Upload </title>
    <script ID="clientEventHandlersVBS" LANGUAGE="vbscript">
    <!--                          
    Sub form2_onsubmit              //** 这里是关键,当form2在提交的过程中时,即活form1的提交
        form1.submit            //**所以我们这里用了两个表单,但只用一个提交就可以了。
    End Sub
    -->
    </script>
    </head>
    <body><form name="form1" ENCTYPE="multipart/form-data" ACTION="upimage.asp" METHOD="POST" 
    target="_blank">
    Please choose a picture to upload: <br>
    <input NAME="picture" TYPE="FILE"> <br>
    </form><form name="form2" action="uptext.asp" method="post">
    <input type="text" name="text1"><br>
    <input type="text" name="text2"><br>
    <input type="submit" value="提交">
    </form></body>
    </html>3-2 兵分两路来处理数据。
        首先,文本很简单。uptext.asp (代码如下)<% @ language=vbscript %>
    <%
    strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")text1=request.form("text1")
    text2=request.form("text2")
    response.write text1
    response.write text2set rs=Server.CreateObject("adodb.recordset")
    sql="SELECT top 1 * FROM imgtable ORDER BY id DESC"  ’这里的意思是选择最后一个Id,既刚刚被改动
    rs.Open sql,strconn,1,3                              ’就是你上传的图像的两个文本字段。rs("text1")=text1                                    ’注意,这里是改动不是添加,所以不用
    addnew。
    rs("text2")=text2
    rs.Update
    rs.Close
    %>
        接着,来处理图像。
    upimage.asp (具体代码如下)<%
    FormSize = Request.TotalBytes                ’得到数据
    FormData = Request.BinaryRead( FormSize )function ImageUp(formsize,formdata)          ’这个函数的功能是截取其中的图像部分。
        bncrlf=chrb(13) & chrb(10)          ’做成函数后。以后你可以自己随意使用了。
        divider=leftb(formdata,instrb(formdata,bncrlf)-1)
        datastart=instrb(formdata,bncrlf&bncrlf)+4
        dataend=instrb(datastart+1,formdata,divider)-datastart
        imageup=midb(formdata,datastart,dataend)
    end functionImage=ImageUp (FormSize,Formdata)            ’这里就是图像部分了。set rs=server.CreateObject("adodb.recordset")
    strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")
    sql="SELECT * FROM imgtable"
    rs.Open sql,strconn,1,3rs.AddNew                                    ’因为表单二在表单一提交的过程中下提交了。
    rs("img").appendchunk Image                  ’所以这里是添加。
    rs.Update
    rs.Close
    response.contenttype="image/gif"                
    response.binarywrite imageup(formsize,formdata)  ’这里是显示图像。表示成功!%>啊?!?!原来如此简单!四:“显示,我要同页显示”
    终于完成了图文同步提交。(真的是同步吗?不是吗?是吗? 唉,我们只是为了解决问题。何必当真哪?不
    是                          吗?)
    现在我们还要让他同页显示出来。其实,这是同样的思路。我们也用两页来完成。主页面:show.asp<%@ Language=VBScript %>
    <% 
    strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")set rs=Server.CreateObject("adodb.recordset")
    sql="SELECT top 1 * FROM imgtable ORDER BY id DESC"
    rs.Open sql,strconn,1,3
    %>
    <html>
    <body>
    以下是你的上传资料。<br>
    文本一:<% Response.Write rs("text1") %><br>
    文本二:<% Response.Write rs("text2") %><br>你的图像:
    <img src=showimg.asp?id=<%=rs("id")%>>          ’注意这里,这才是关键。他可以实现网页图像与文本
    </body>                                          ’共存。 
    </html>幕后页面:showimg.asp        (说他是幕后的页面,因为他潜伏在主页面里。看上是一个页面一样)<%@ Language=VBScript %>
    <%
    strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb")
    id=Request("id")
    set rs=server.CreateObject("adodb.recordset")
    sql="SELECT * FROM imgtable where id="&id
    rs.Open sql,strconn,1,3
    response.contenttype="image/gif"
    Response.BinaryWrite rs("img")
    %>(全文完:希望本文能帮助那些急于想解决本类问题的网友。)
      

  3.   

    强烈推荐数据库中对图片的操作,
    http://stady.51.net/webnet/asp/tech/01110503.htm
      

  4.   

    http://stady.51.net/webnet/asp/tech/01110503.htm 
    我要的是asp+sql server的
    哪位有指教,一定给分,再加100都可以
      

  5.   

    100分给我我一定帮你借解决(因为我已经解决了数据库图像存储与页面显示,不过是在sql server 数据库中的)
    [email protected] 
      

  6.   

    我做个一个标志征集ASP,FOR SQL SERVER2000的
    =======input.asp
    <%Option Explicit
    Dim Name , Station , Email , Context
    Name = Request.Form("name")
    Station = Request.Form("station")
    Email = Request.Form("email")
    Context = Request.Form("context")
    %>
    <html>
    <head>
    <title>标志征集启事</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <link rel="stylesheet" href="style.css" type="text/css">
    </head><body bgcolor="#F7E7C7" text="#000000">
    <table width="448" border="0" cellspacing="0" cellpadding="0" align="center">
      <tr> 
        <td width="519" height="23" align="center"><img src="title1.jpg" width="500" height="40"></td>
      </tr>
      <tr> 
        <td width="519" height="22" valign="top"> 
          <hr>
        </td>
      </tr>
      <tr> 
        <td width="519" height="22"> 
          <hr>
        </td>
      </tr>
      <tr> 
        <td width="519" align="center" valign="middle"> 
          <form name="input" method="post" action="updata.asp"  enctype="multipart/form-data">
            <table width="90%" border="0" cellspacing="0" cellpadding="4">
              <tr> 
                <td width="21%" height="20" align="right">姓 名:</td>
                <td width="79%" height="20"> 
                  <input class=border type="text" name="name" size="10" value="<%=Name%>">
                </td>
              </tr>
              <tr> 
                <td width="21%" height="20" align="right">详细地址:</td>
                <td width="79%" height="20"> 
                  <input class=border type="text" name="station" size="30" value="<%=Station%>">
                </td>
              </tr>
              <tr> 
                <td width="21%" height="20" align="right">电子邮件:</td>
                <td width="79%" height="20"> 
                  <input class=border type="text" name="email" value="<%=Email%>">
                </td>
              </tr>
              <tr> 
                <td width="21%" height="20" align="right">标志图片:</td>
                <td width="79%" height="20"> 
                  <input class=border type="file" name="image">
                </td>
              </tr>
              <tr> 
                <td width="21%" height="20" align="right">说 明:</td>
                <td width="79%" height="20"> 
                  <textarea class="border" name="context" cols="50" rows="5"><%=Context%></textarea>
                </td>
              </tr>
              <tr align="center"> 
                <td colspan="2" height="20"> 
                  <input style="BORDER-RIGHT: rgb(0,0,0) 1px solid; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; COLOR: #ffffff; BORDER-BOTTOM: rgb(0,0,0) 1px solid; BACKGROUND-COLOR: #0099cc" type="submit" name="Submit" value="确定">
                  <input style="BORDER-RIGHT: rgb(0,0,0) 1px solid; BORDER-TOP: rgb(0,0,0) 1px solid; BORDER-LEFT: rgb(0,0,0) 1px solid; COLOR: #ffffff; BORDER-BOTTOM: rgb(0,0,0) 1px solid; BACKGROUND-COLOR: #0099cc" type="reset" name="Submit2" value="取消">
                  <a href="list.asp">我还是先看看别人的投稿</a> </td>
              </tr>
            </table>
          </form>
        </td>
      </tr>
      <tr> 
        <td width="519" height="22" valign="top"> 
          <hr>
        </td>
      </tr>
    </table>
    </body>
    </html>
    ========================updata.asp
    <%Option Explicit%>
    <!--#include file ="upload.asp"-->
    <%
    Dim FormSize , FormData , Fields , ImgSize , ImgType , ImgData , SQL , Name , Email , Station , Context , MessTextFormSize = Request.TotalBytes
    FormData = Request.BinaryRead(FormSize)
    Set Fields = GetUpload(FormData)Name = RemoveHtmlStyle(Fields("name").Value)
    Email = RemoveHtmlStyle(Fields("email").Value)
    Station = RemoveHtmlStyle(Fields("station").Value)
    Context = RemoveHtmlStyle(Fields("context").Value)Response.Write "<form name='webaddform' method='post' action='input.asp'>"
    Response.Write " <Input type=hidden Name=name value=" & Fields("name").Value & ">"
    Response.Write " <Input type=hidden Name=email value=" & Fields("email").Value & ">"
    Response.Write " <Input type=hidden Name=station value=" & Fields("station").Value & ">"
    Response.Write " <Input type=hidden Name=context value=" & Fields("context").Value & ">"
    Response.Write "</form>"MessText = CheckWebAddInput(name,email,station,context)
    If MessText <> "" Then
    Response.Write "<script>window.alert('" & MessText & "');document.webaddform.submit();</script>"
    Response.End
    End IfSQL = "Select * From LongMan Where ID Is Null"
    Rs.Open SQL,Connect,1,3
    Rs.AddNew
    ImgSize = Fields("image").length
    ImgType = Fields("image").ContentType
    ImgData = Fields("image").ValueIf ImgType <> "image/pjpeg" And ImgType <> "image/gif" Then
    MessText = "您要投稿的图片呢?"
    Response.Write "<script>window.alert('" & MessText & "');document.webaddform.submit();</script>"
    Else
    Rs("Image").AppendChunk ImgData
    Rs("ImageSize") = ImgSize
    End IfRs("Name") = Name
    Rs("Email") = Email
    Rs("Context") = Context
    Rs("Station") = Station
    Rs.Update
    Rs.CloseResponse.Write "<script>window.alert('投稿成功!您的投稿在审核后将发布,请等待好消息!');document.webaddform.submit();</script>"
    %>========upload.asp
    <SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
    Function GetUpload(FormData)
        Dim DataStart,DivStr,DivLen,DataSize,FormFieldData,PosOpenBoundary,PosCloseBoundary,FieldNameStart,FieldNameSize,FormFieldName
        Dim FieldFileNameStart,FormFileName,FieldFileCTStart,FormFileCT,Field,FieldFileNameSize,FieldFileCTSize
        '分隔标志串(+CRLF)
        DivStr = LeftB(FormData,InStrB(FormData,str2bin(VbCrLf)) + 1)
        '分隔标志串长度
        DivLen = LenB(DivStr)
        PosOpenBoundary = InStrB(FormData,DivStr)
        PosCloseBoundary = InStrB(PosOpenBoundary + 1,FormData,DivStr)
        Set Fields = CreateObject("Scripting.Dictionary")    While PosOpenBoundary > 0 And PosCloseBoundary > 0
           'name起始位置(name="xxxxx"),加6是因为[name="]长度为6
           FieldNameStart = InStrB(PosOpenBoundary,FormData,str2bin("name=")) + 6
           FieldNameSize = InStrB(FieldNameStart,FormData,ChrB(34)) - FieldNameStart '(")的ASC值=34
           FormFieldName = bin2str(MidB(FormData,FieldNameStart,FieldNameSize))       'filename起始位置(filename="xxxxx")
           FieldFileNameStart = InStrB(PosOpenBoundary,FormData,str2bin("filename=")) + 10
           If FieldFileNameStart < PosCloseBoundary And FieldFileNameStart > PosopenBoundary Then
              FieldFileNameSize = InStrB(FieldFileNameStart,FormData,ChrB(34)) - FieldFileNameStart '(")的ASC值=34
              FormFileName = bin2str(MidB(FormData,FieldFileNameStart,FieldFileNameSize))
           Else
              FormFileName = ""
           End If       'Content-Type起始位置(Content-Type: xxxxx)
           FieldFileCTStart = InStrB(PosOpenBoundary,FormData,str2bin("Content-Type:")) + 14
           If FieldFileCTStart < PosCloseBoundary  And FieldFileCTStart > PosOpenBoundary Then
              FieldFileCTSize = InStrB(FieldFileCTStart,FormData,str2bin(VbCrLf & VbCrLf)) - FieldFileCTStart
              FormFileCT = bin2str(MidB(FormData,FieldFileCTStart,FieldFileCTSize))
           Else
              FormFileCT = ""
           End If       '数据起始位置:2个CRLF开始
           DataStart = InStrB(PosOpenBoundary,FormData,str2bin(VbCrLf & VbCrLf)) + 4
           If FormFileName <> "" Then
              '数据长度,减1是因为数据文件的存取字节数问题(可能是AppendChunk方法的问题):
              '由于字节数为奇数的图象存到数据库时会去掉最后一个字符导致图象不能正确显示,
              '字节数为偶数的数据文件就不会出现这个问题,因此必须保持字节数为偶数。
              DataSize = InStrB(DataStart,FormData,DivStr) - DataStart - 1
              FormFieldData = MidB(FormData,DataStart,DataSize)
           Else
              '数据长度,减2是因为分隔标志串前有一个CRLF
              DataSize = InStrB(DataStart,FormData,DivStr) - DataStart - 2
              FormFieldData = bin2str(MidB(FormData,DataStart,DataSize))
           End If       '建立一个Dictionary集存储Form中各个Field的相关数据
           Set Field = CreateUploadField()
           Field.Name = FormFieldName
           Field.FilePath = FormFileName
           Field.FileName = GetFileName(FormFileName)
           Field.ContentType = FormFileCT
           Field.Length = LenB(FormFieldData)
           Field.Value = FormFieldData       Fields.Add FormFieldName, Field       PosOpenBoundary = PosCloseBoundary
           PosCloseBoundary = InStrB(PosOpenBoundary + 1,FormData,DivStr)
        Wend
        Set GetUpload = Fields
    End Function'把二进制字符串转换成普通字符串函数
    Function bin2str(binstr)
       Dim varlen,clow,ccc,skipflag,i
       '中文字符Skip标志
       skipflag=0
       ccc = ""
       If Not IsNull(binstr) Then
          varlen=LenB(binstr)
          For i=1 To varlen
              If skipflag=0 Then
                 clow = MidB(binstr,i,1)
                 '判断是否中文的字符
                 If AscB(clow) > 127 Then
                    'AscW会把二进制的中文双字节字符高位和低位反转,所以要先把中文的高低位反转
                    ccc =ccc & Chr(AscW(MidB(binstr,i+1,1) & clow))
                    skipflag=1
                 Else
                    ccc = ccc & Chr(AscB(clow))
                 End If
              Else
                 skipflag=0
              End If
          Next
       End If
       bin2str = ccc
    End Function
    '把普通字符串转成二进制字符串函数
    Function str2bin(varstr)
       Dim I,varchar,varasc,varlow,varhigh
       str2bin=""
       For i=1 To Len(varstr)
           varchar=mid(varstr,i,1)
           varasc = Asc(varchar)
           ' asc对中文字符求出来的值可能为负数,
           ' 加上65536就可求出它的无符号数值
           ' -1在机器内是用补码表示的0xffff,
           ' 其无符号值为65535,65535=-1+65536
           ' 其他负数依次类推。
           If varasc<0 Then
              varasc = varasc + 65535
           End If
           '对中文的处理:把双字节低位和高位分开
           If varasc>255 Then
              varlow = Left(Hex(Asc(varchar)),2)
              varhigh = right(Hex(Asc(varchar)),2)
              str2bin = str2bin & chrB("&H" & varlow) & chrB("&H" & varhigh)
           Else
              str2bin = str2bin & chrB(AscB(varchar))
           End If
       Next
    End Function'取得文件名(去掉Path)
    Function GetFileName(FullPath)
       If FullPath <> "" Then
          FullPath = StrReverse(FullPath)
          FullPath = Left(FullPath, InStr(1, FullPath, "\") - 1)
          GetFileName = StrReverse(FullPath)
       Else
          GetFileName = ""
       End If
    End Function
    </SCRIPT>
    <SCRIPT RUNAT=SERVER LANGUAGE=JSCRIPT>
    function CreateUploadField(){ return new uf_Init() }
    function uf_Init(){
      this.Name = null
      this.FileName = null
      this.FilePath = null
      this.ContentType = null
      this.Value = null
      this.Length = null
    }
    </SCRIPT>