表单中还有别的<input >数据

解决方案 »

  1.   

    因为原来这功能是用delphi做的,delphi存的是二进制图片信息。
    web要跟delphi软件统一,要不数据库原有的那些数据就不好处理了。
      

  2.   

    用 adodb.recordset 的 appchunck 这个函数
      

  3.   

    upload.htm
    ' 上传页面
    <html> 
    <body> 
    <p align="center">图片上传</p>
    <center> 
       <form name="mainForm" enctype="multipart/form-data"
    ' 这个Form属性是得到上传的数据的关键
    action="process.asp" method=post> 
        <input type=file name=mefile><br> 
       <input type=submit name=ok value="上传"> 
       </form> 
    </center> 
    </body> 
    </html> process.asp
    ' 处理浏览器中送来的数据
    <% 
    response.buffer=true 
    formsize=request.totalbytes 
    formdata=request.binaryread(formsize) 
    bncrlf=chrB(13) & chrB(10) 
    divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1) 
    datastart=instrb(formdata,bncrlf & bncrlf)+4 
    dataend=instrb(datastart+1,formdata,divider)-datastart 
    mydata=midb(formdata,datastart,dataend) set connGraph=server.CreateObject("ADODB.connection") 
    connGraph.ConnectionString="driver={Microsoft Access Driver (*.mdb)};
    DBQ=" & server.MapPath("images.mdb") & ";uid=;PWD=;" 
    connGraph.Open set rec=server.createobject("ADODB.recordset") 
    rec.Open "SELECT * FROM [images] where id is null",connGraph,1,3 
    rec.addnew 
    rec("img").appendchunk mydata 
    rec.update 
    rec.close 
    set rec=nothing 
    set connGraph=nothing 
    %> 
     
    showimg.asp
    ' 显示图片
    <% 
    set connGraph=server.CreateObject("ADODB.connection") 
    connGraph.ConnectionString="driver={Microsoft Access Driver (*.mdb)};
    DBQ=" & server.MapPath("images.mdb") & ";uid=;PWD=;" 
    connGraph.Open 
    set rec=server.createobject("ADODB.recordset") 
    strsql="select img from images where id=" & trim(request("id")) 
    rec.open strsql,connGraph,1,1 
    Response.ContentType = "image/*" 
    ' 在输出到浏览器之前一定要指定Response.ContentType = "image/*",以便正常显示图片
    Response.BinaryWrite rec("img").getChunk(7500000) 
    rec.close 
    set rec=nothing 
    set connGraph=nothing 
    %> 
      

  4.   

    to读书之人:这个程序我曾经看过,请问如果表单里面还有别的input程序该如何操作?怎么过滤?
      

  5.   

    leo963258(读书之人) 
    你这样的方法只是把图片传上了,那文字怎么办呢?图片与文字怎样分离很复杂,可以说清楚点吗?
      

  6.   

    如果是 ASP 的话,有专门的上传文件的免费组件,可以图文一块 post 的.PHP 的话,就更没问题了,组件都不需要呢,赫赫
      

  7.   

    to  bflovesnow() :不是上传到文件夹里面哦,是要把整张图片保存到数据库里的。to 读书之人:用两个表单?那是否处理文件也要分开了?感觉这样很容易乱套阿
      

  8.   

    再up
    图片要更新总有条件吧?不可能
    SELECT * FROM [images] where id is null
    当作插入图片条件的语句的
    比如我需要id=1的时候,这个id参数传过来怎么接受?
      

  9.   

    从我的程序里截下来的,取得数据的部分:
    response.buffer=true 
    formsize=Request.TotalBytes
    if formsize>80000 then
      response.write "图片过大,拒绝操作"
    else
    formdata=request.binaryread(formsize) 
    bncrlf=chrB(13) & chrB(10)
    divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
    datastart=instrb(formdata,bncrlf & bncrlf)+4
    dataend=instrb(datastart+1,formdata,divider)-datastart
    mydata=midb(formdata,datastart,dataend) 
      

  10.   

    页面中:
    <form method="post" action="upfile.asp" name="reg" enctype="multipart/form-data">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td align="center"><p><strong>选择图片:</strong> 
              <input type="file" name="file" size="32">
              <br>
              <br>
              <input type="submit" name="Submit" value="开始上传">
              &nbsp;&nbsp;&nbsp;&nbsp; <input type="reset" name="reset" value="重新选择">
              </td>
        </tr>
      </table>
    </form>upfile.asp文件内容:FormSize = Request.TotalBytes
    FormData = Request.BinaryRead(FormSize)Image=ImageUp (FormSize,Formdata)
    id=1
    set rs=server.CreateObject("adodb.recordset")
    sql="SELECT * FROM npic where 0=1"
    rs.Open sql,conn,1,3 
    rs.AddNew
    rs("nid") =id1
    rs("pic") = NULL
    rs("pic").appendchunk Image
    rs.Update
    id=rs("id")
    rs.Close
    set rs=nothing
      conn.close
      set conn=nothingfunction 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 function
      

  11.   

    用jsp的话,就好办
    com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();
    mySmartUpload.initialize(pageContext);
    mySmartUpload.upload();
    com.jspsmart.upload.File myfile=mySmartUpload.getFiles().getFile(0);
    byte[]  all=myfile.getContentString().getBytes();
    然后写入blob字段
    BLOB blob = rs.getBLOB(blobname); //得到BLOB字段
    blob.putBytes(1, all); //将字节数组写入BLOB字段
      

  12.   

    asp中的aspsmartupload组件也可以把文件和input一起传上去,我记得好像是上传对象的一个Form属性吧