我怎么多个file控件?

楼主cn9714(cn9714)2003-08-08 06:41:29 在 Web 开发 / ASP 提问

我怎么多个file控件上传图片,并保存一些信息(如:图片名,路径),当我不选文件时,还是会保留信息! 问题点数:0、回复次数:5Top

1 楼Goodreams(好梦)回复于 2003-08-08 06:54:34 得分 0

用upload_5xSoftTop

2 楼zorou_fatal(The world and system is even)回复于 2003-08-08 07:35:59 得分 0

无组件文件上传代码实例(支持多文件上传及文件和input域混合上传)  
  2001-1-21     动网先锋      
   
  关于无组件文件上传的文章已经很多了,所以在这里我不想再解释无组件文件上传的原理。在ASP中无法将二进制文件数据直接保存成文件,所以我们一般还是利用数据库来保存用户上传的文件。  
   
  1。数据库表结构(Access):  
  UserID:Text(保存上传文件的用户ID)  
  FileContentType:Text(用来保存上传文件的类型,eg:"Application/msword",主要用来使用户能正确下载此文件)  
  FileContent:OLE   Object(保存文件数据)  
   
  2。HTML文件  
  muploadfile.htm  
  <Form   name="upload_file"   enctype="multipart/form-data"   action="muploadfile.asp"   method=post>  
  <input   type=hidden   name="UserID"   value="abc">  
  <input   type=hidden   name="FileUploadStart">   '这里用来表示开始文件数据上传  
  File   to   send:   <BR>  
  <INPUT   TYPE="file"   name="file_up"   size="30"><br>  
  <INPUT   TYPE="file"   name="file_up"   size="30"><br>  
  <input   type=hidden   name="FileUploadEnd">   '这里用来表示文件数据结束  
  <input   type=submit   value=Submit>  
  </Form>  
   
  3。ASP文件  
  muploadfile.asp  
   
  <%  
  Response.Expires=0  
  Function   bin2str(binstr)    
  Dim   varlen,clow,ccc,skipflag    
   
  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    
  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    
   
   
  varByteCount   =   Request.TotalBytes  
  bnCRLF   =   chrB(   13   )   &   chrB(   10   )  
  binHTTPHeader=Request.BinaryRead(varByteCount)    
  Divider   =   LEFTB(   binHTTPHeader,   INSTRB(   binHTTPHeader,   bnCRLF   )   -   1   )  
   
  '开始读非文件域的数据  
  Do   while   lenB(binHTTPHeader)>46  
   
  binHeaderData   =   LeftB(binHTTPHeader,   INSTRB(   binHTTPHeader,   bnCRLF   &   bnCRLF   )-1)  
  strHeaderData=bin2str(binHeaderData)  
   
  lngFieldNameStart=Instr(strHeaderData,"name="&chr(34))+Len("name="&chr(34))  
  lngFieldNameEnd=Instr(lngFieldNameStart,strHeaderData,chr(34))  
   
   
  strFieldName=Mid(strHeaderData,lngFieldNameStart,lngFieldNameEnd-lngFieldNameStart)  
  strFieldName=Trim(strFieldName)  
  strFieldName=Replace(strFieldName,vbcrlf,vbnullstring)  
   
  '判断文件数据时候开始  
  If   strComp(strFieldName,"FileUploadStart",1)=0   Then  
  binHTTPHeader=MIDB(binHTTPHeader,INSTRB(   DataStart   +   1,   binHTTPHeader,   divider   ))  
  exit   do  
  End   if  
   
  DataStart   =   INSTRB(   binHTTPHeader,   bnCRLF   &   bnCRLF   )   +   4    
  DataEnd   =   INSTRB(   DataStart   +   1,   binHTTPHeader,   divider   )   -   DataStart  
   
  binFieldValue=MIDB(   binHTTPHeader,   DataStart,   DataEnd   )  
  strFieldValue=bin2str(binFieldValue)  
  strFieldValue=Trim(strFieldValue)  
  strFieldValue=Replace(strFieldValue,vbcrlf,vbnullstring)  
   
  '非文件上传域变量赋值  
  execute   strFieldName&"="""&strFieldValue&""""  
   
   
  binHTTPHeader=MIDB(binHTTPHeader,INSTRB(   DataStart   +   1,   binHTTPHeader,   divider   ))  
   
  loop  
   
  '开始处理文件数据  
  Do   while   lenB(binHTTPHeader)>46  
   
   
  binHeaderData   =   LeftB(binHTTPHeader,   INSTRB(   binHTTPHeader,   bnCRLF   &   bnCRLF   )-1)  
   
  strHeaderData=bin2str(binHeaderData)  
   
  '读取上传文件的Content-Type  
  lngFileContentTypeStart=Instr(strHeaderData,"Content-Type:")+Len("Content-Type:")  
  strFileContentType=Trim(Mid(strHeaderData,lngFileContentTypeStart))  
  strFileContentType=Replace(strFileContentType,vbCRLF,vbNullString)  
   
  '读取上传的文件名  
  lngFileNameStart=Instr(strHeaderData,"filename="&chr(34))+Len("filename="&chr(34))  
  lngFileNameEnd=Instr(lngFileNameStart,strHeaderData,chr(34))  
  strFileName=Mid(strHeaderData,lngFileNameStart,lngFileNameEnd-lngFileNameStart)  
  strFileName=Trim(strFileName)  
  strFileName=Replace(strFileName,vbCRLF,vbNullString)  
   
  '读取上传文件数据  
  DataStart   =   INSTRB(   binHTTPHeader,   bnCRLF   &   bnCRLF   )   +   4    
  DataEnd   =   INSTRB(   DataStart   +   1,   binHTTPHeader,   divider   )   -   DataStart  
   
  If   strFileName<>""   Then  
   
  binFieldValue=MIDB(   binHTTPHeader,   DataStart,   DataEnd   )  
   
  '将上传的文件写入数据库  
  set   conn   =   Server.CreateObject("ADODB.Connection")  
  conn.Open   "DSN=abc"  
   
  SQL="select   *   from   User_File"  
  set   rs=server.CreateObject("ADODB.Recordset")  
  rs.Open   sql,conn,3,3  
  rs.addnew  
  rs("UserID")=UserID  
  rs("FileContentType")=strFileContentType  
  rs("FileContent").AppendChunk   binFieldValue  
  rs.update  
  rs.close  
  set   rs=Nothing  
  conn.Close  
  set   conn=Nothing  
   
  End   if  
   
  binHTTPHeader=MIDB(binHTTPHeader,INSTRB(   DataStart   +   1,   binHTTPHeader,   divider   ))  
   
  loop  
  %>  
   
  4。下载用户上传的文件  
  <%  
  Response.Buffer   =   true  
  Response.Clear  
   
  UserID=request("UserID")  
   
  Set   conn=server.createobject("adodb.connection")  
  set   rs=server.createobject("adodb.recordset")  
  conn.open   "DSN=UploadFile"  
  rs.open   "select   *   from   User_File   where   UserID='"&UserID&"'",conn,3,3  
  Response.ContentType   =   rs("FileContentType")  
   
  lngOffset=0  
  conChunkSize=1024  
  lngPictSize=rs("FileContent").ActualSize  
  Do   While   lngOffset   <   lngPictSize  
  varChunk   =   rs("FileContent").GetChunk(conChunkSize)  
  Response.BinaryWrite   varChunk  
  lngOffset   =   lngOffset   +   conChunkSize  
  If   lngOffset   >   lngPictSize   Then   Exit   Do  
  Loop  
   
  rs.close  
  set   rs=Nothing  
  conn.close  
  set   conn=nothing  
  %>  
     
  Top

3 楼mygoodbuy(跑步进入共产主义)回复于 2003-08-08 10:10:42 得分 0

使用无俱类组件上传,里面有范例Top

4 楼cn9714(cn9714)回复于 2003-08-08 12:25:46 得分 0

If     NOT   IsNothing(File1.PostedFile)   Then  
            filename13   =   filename12   &   "-1.jpg"  
      filepath12   =   "<img   height=""407"",   src=""source\"     &   filename13   &   """   width=""539"">"  
                          filepath1   =   Path.Combine("E:\MIS\pub\tqpp\source\",   Path.GetFileName(filename13))  
    filenames1   =   File1.PostedFile.filename  
    File1.PostedFile.SaveAs(filepath1)  
      end   if  
      If     NOT   IsNothing(File2.PostedFile)   Then  
    filename23       =   filename12   &   "-2.jpg"  
    filepath22       =   "<img   height=""407"",   src=""source\"     &   filename23   &   """   width=""539"">"  
                          filepath2   =   Path.Combine("E:\MIS\pub\tqpp\source\",   Path.GetFileName(filename23))  
    filenames2   =   File2.PostedFile.filename  
      File2.PostedFile.SaveAs(filepath2)  
      end   ifTop

5 楼cn9714(cn9714)回复于 2003-08-08 12:31:07 得分 0

If     NOT   IsNothing(File1.PostedFile)   Then  
  没有按我想的去做!并没有控制  
   
  我的目的:是当该控件没有选定文件的时候  
  dim   filename13   as   string=""  
  dim   filepath12   as   string=""  
  dim   filename23   as   string   =   ""  
  就按上面的初始的变量,不修改.Top

你可能对以下的问题也比较感兴趣....