活用ASP把图片上传到数据库
- 格式:pdf
- 大小:87.82 KB
- 文档页数:3
图片及文件上传和下载本文简单介绍 2.0中将图片或文件上传到服务器或保存到数据库的方法,以及保存后如何显示和下载。
1.图片及文件保存到服务器1.1 上传本示例构造一个能将文件上传到服务器指定目录的页面。
(1)新建一个网站,增加web.config配置文件。
(2)在解决方案资源管理器中,在网站名称上单击鼠标右键,增加一个文件夹,取名为Images,作为上传文件的路径。
(3)进入default.aspx的设计模式,从工具箱的标准选项卡中,拖一个FileUpload控件到页面上,默认ID为“FileUpload1”。
该控件负责选中一个文件。
(4)拖一个Button到页面上,Text属性设置为“上传”,ID设置为btnUpload。
点击该按钮后,上传文件。
(5)为上传按钮增加Click事件。
(6)在Click事件中,增加以下代码:protected void btnUpload_Click(object sender, EventArgs e){// 是否选中了文件,如果没有选中,提示并返回if(FileUpload1.FileName == ""){Response.Write("<script language='javascript'>alert('请先选中一个文件再点击上传按钮!');</script>");return;}/* 为防止上传的文件重名,将上传时间追加到文件名之后* 获取新文件名开始*/// 取得上传文件名,注意这样得到的是完整路径+文件名string strFileName = FileUpload1.FileName;// 得到最后一个“\”的位置int nIndex = stIndexOf('\\');// 得到真正的文件名strFileName = strFileName.Substring(nIndex + 1);// 得到文件后缀前的“.”所在位置nIndex = stIndexOf('.');// 将“文件名.后缀”改为“文件名+时间.后缀”(那个加号表示连接)strFileName = strFileName.Substring(0, nIndex)+ DateTime.Now.ToString("yyyyMMddHHmmss")+ strFileName.Substring(nIndex);/* 获取新文件名结束*/// 将上传文件的虚拟目录映射为服务器绝对路径string strPath = Server.MapPath("./Images/"+ strFileName);// 上传文件FileUpload1.PostedFile.SaveAs(strPath);}(7)运行,选中一个文件并上传,看一下是否上传到了Images目录。
(注意:在使用组件的脚本内接受表单的值为Upload.Form ) 上传可以为单文件上传 也可为批量文件上传(单文件上传:)'Set file1 = Upload.Files("file1")'newname = year(now()) & month(now()) & day(now()) & hour(now()) &minute(now()) & second(now())'file1.SaveAs Server.MapPath(".") & "\" & newname & file1.Ext'Set file1 = nothing(批量上传:)For each MyFiles in Upload.Filesnewname = year(now()) & month(now()) & day(now()) & hour(now()) & minute(now()) & second(now())MyFiles.SaveAs Server.MapPath(".") & "\" & newname & MyFiles.ExtNextSet Upload = nothing上传文件组件的属性:名称说明 OverwriteFiles 是否覆盖文件上传组件的方法:名称说明 备注 Save 保存文件 既是子过程又是函数过程。
子过程有参数则传至服务器,无参数传至服务器内容中;函数过程返回的是上传文件数量。
SetMaxsize 设置上传文件最大字节数使用方法:SetMaxsize 1024,True说明:最大字节1024,显示错误信息,若为 False 则截断文件大小,不显示错误信息。
详解图片上传到数据库数据库中的储存内容不是单单的数据,内容也是丰富多彩的,如今数据库可以实现将图片上传到数据库,下文中就为大家详细介绍将图片上传到数据库的知识。
下面我来汇总一下如何将图片保存到SqlServer、Oracle、Access数据库中,下文内容供大家参考学习,希望对大家能够有所帮助。
首先,我们要明白图片是以二进制的形式保存在数据库中的,那么把图片保存到数据库中的步骤大体上有这几步1.将图片转换为二进制数组(byte[]);2.把转换后的二进制数组(byte[])作为参数传递给要执行的Command;3.执行Command;首先,如何把图片转换成byte[],如果你使用的是2.0,那么你可以使用FileUpLoad控件来实现byte[] fileData = this.FileUpload1.FileBytes;如果你用的是1.1或者你在创建WinForm那么你可以使用下面的方法来把图片转换为byte[]1public byte[] getBytes(string filePath)2{3System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open);4byte[] imgData = new byte[fs.Length];5fs.Read(imgData, 0, (int)fs.Length);6return imgData;7}8接下来我们要做的就是要把已经得到的byte[]作为参数传递给Command对象1.SqlServer数据库。
SqlServer有Image字段类型,最大可以存储2G的数据。
byte[] fileData = this.FileUpload1.FileBytes;9string sql = "insert into t_img(img) values (@img)";10string strconn = System.Configuration.ConfigurationManager.ConnectionStrings["fengd ongDB"].ToString();11SqlConnection sqlConn = new SqlConnection(strconn);12SqlCommand sqlComm = new SqlCommand(sql, sqlConn);13sqlComm.Parameters.Add("@img", SqlDbType.Image);//添加参数14sqlComm.Parameters["@img"].Value = fileData;//为参数赋值1516sqlConn.Open();17sqlComm.ExecuteNonQuery();18sqlConn.Close();192.Oracle数据库。
ASP上传图片到数据库图片大小有限制的解决方法(“电脑编程技巧与维护”上半月刊)我在日常工作中开发了一个网站,需要将一些图片上传到数据库,采用ASP+ACCESS方法,后台服务操作系统为WIN2003,我的上传代码如下:1、上传图片界面代码<html><head><meta name="VI60_defaultClientScript" content="VBScript"><title> File Upload </title></head><body><form name="form2" ENCTYPE="multipart/form-data" ACTION="SA VE_PIC.asp" METHOD="POST" ><br><br><br><br><table width="71%" cellpadding="0" border="1" cellspacing="0" bordercolor="#0078C8" bordercolorlight="#0078C8" bordercolordark="#FFFFFF" align="center"> <tr> <td colspan="2"><div align="center"><font size="5"><b><font color="#FF0000">在</font><font size="5" color="#FF0000"><b>下面</b></font><font color="#FF0000">添加图片</font></b></font></div> </td> </tr> <tr> <td colspan="2"><div align="center"><input type=file name=mefile>图1</div> </td></tr><tr><td colspan="2" height="27"><div align="center"><font size="5" color="#FF0000"><b>在下面添加图片</b></font></div> </td></tr> <tr> <td><div align="center">图2<input type=file name=mefile2></div> </td><td><div align="center"> 图3<input type=file name=mefile3></div> </td></tr><div align="center"><br><input type="submit" value="提交"><a href="quit.asp"> 安全退出</a></div></form><p> </p></body></html>执行后界面如下:2、SA VE_PIC.asp代码如下:<%Server.ScriptTimeOut =300%><a href="uptext.asp">添加说明</a><%dim mydata(10)response.buffer=true' 图片大小formsize=request.totalbytes'response.write formsize' 读取提交来的数据formdata=request.binaryread(formsize)bncrlf=chrB(13)&chrB(10)' 分隔符divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1) datastart = 0For i=1 To 3' 图片数据开始位置datastart=instrb(datastart+datalen+1, formdata,bncrlf&bncrlf)+4' 图片数据结束位置datalen=instrb(datastart+1,formdata,divider)-datastart' 获取图片数据mydata(i)=midb(formdata,datastart,datalen)Nextdim conndim connstron error resume nextconnstr="DBQ="+server.mappath("pic.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"set conn=server.createobject("ADODB.CONNECTION")conn.open connstrREM 增加主图片IF LEN(RTRIM(MYDA TA(1))) >2 THENsql="select * from images where imgid is null order by imgid desc"Set rs = Server.CreateObject("ADODB.Recordset")rs.Open sql,conn,3,2rs.addnewrs("img").appendchunk mydata(1) '增加到数据库中rs("bz")="Y"rs.updatesession("sl")=1REM 取得主张图片ID号sql1="select * from images order by imgid desc"Set rs1= Server.CreateObject("ADODB.Recordset")rs1.Open sql1,conn,3,2SESSION("IMGID")=rs1("imgid")ELSEEND IF%><%REM 增加第一张附图片IF LEN(RTRIM(MYDA TA(2))) >2 THENsqlstr = "select * from images where imgid is null order by imgid desc"rs.open sqlstr, conn, 3,2rs.addnewrs("img").appendchunk mydata(2)RS("BZ")="N"rs("newsid")=session("imgid")rs.updatesession("sl")=session("sl")+1ELSEEND IFREM 增加第二张附图片IF LEN(RTRIM(MYDA TA(3))) >2 THENsqlstr = "select * from images where imgid is null order by imgid desc"rs.open sqlstr, conn, 3,2rs.addnewrs("img").appendchunk mydata(3)RS("BZ")="N"rs("newsid")=session("imgid")rs.updatesession("sl")=session("sl")+1ELSEEND IFrs.closeRESPONSE.REDIRECT UPTEXT.ASP%>3、IMAGE表结构如下:IMGID 自动编号IMG OLE对象在开发的过程中,我发现上传较小的图片没有问题,但无法上传较大或多个图片,经过查找资料,我发现不是代码的问题,而是WIN2003 IIS服务默认接收的数据大小为200K,该配置存放在C:\WINDOWS\system32\inetsrv\下的metabase.xml文件中,具体解决办法如下:1、进入IIS服务管理器,在“本地计算机”单击右键,选择“属性”,如图:选中“允许直接编辑配置数据库”,确定后退出。
将图⽚上传到mysql数据库的⽅法这是页⾯上的按钮单击事件复制代码代码如下: protected void Button1_Click(object sender, EventArgs e) { string tid = Utils.getRandom(32); Stream mystream = this.FileUpload1.PostedFile.InputStream; int length = this.FileUpload1.PostedFile.ContentLength; byte[] pic = new byte[length]; mystream.Read(pic, 0, length); bool flg = insert(tid, pic); } 这是执⾏插⼊的⽅法复制代码代码如下: public bool insert(string tid,byte[] pic) { DBConn db = new DBConn(); StringBuilder sql = new StringBuilder(); sql.Append("insert into teacher(TID,TPHOTO,TDELETE) values (?tid,?pic,?flg)"); int flg = 0; try { myConnection = db.getConnection(); MySqlCommand myCommand = new MySqlCommand(sql.ToString(), myConnection); myCommand.Parameters.Add(new MySqlParameter("?tid", MySqlDbType.String, 32)); myCommand.Parameters["?tid"].Value = tid; myCommand.Parameters.Add(new MySqlParameter("?pic", MySqlDbType.Blob)); myCommand.Parameters["?pic"].Value = pic; myCommand.Parameters.Add(new MySqlParameter("?flg", MySqlDbType.Int16)); myCommand.Parameters["?flg"].Value = 0; myConnection.Open(); flg = myCommand.ExecuteNonQuery(); } catch (Exception ex) { return false; } finally { if (myConnection != null) { myConnection.Close(); } } if (flg > 0) { return true; } return false; }。
ASP图片上传代码-----------------adm_up.asp-----------------代码如下:<!--#include file="conn.asp"--> '数据库连接文件<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>管理</title><style type="text/css"><!--.STYLE1 {color: #000000}body {margin-left: 0px;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;}--></style><script language="javascript">function checknull(){dm=document.formvar filter=/^\s*[a-zA-Z]{1}:(\\).*[\.][jpgJPGifIF]{3}\s*$/;if (!filter.test(dm.file1.value)){alert('请选择您要上传图片,格式只能上传jpg或gif图片!');dm.file1.focus();return false;}return true;}</script></head><body><table width="100%" border="0" align="left" cellpadding="0" cellspacing="0"><tr><td width="100%" height="26" align="left"><%if session("admupiccnt")="" then%><form action="adm_upc.asp" method="post" enctype="multipart/form-data" name="form" id="form" onsubmit="return checknull()"><input type="hidden" name="act" value="upload" /><input name="file1" type="file" class="wenxints_line" size="32"/><input name="submit" type="submit" value="上传图片" /></form><%else%> <input name="Pic" type="text" value="<%=session("admupiccnt")%>" size="38" readonly/> <%end if%></td></tr></table></body></html>-----------------adm_upc.asp-----------------<!--#include file="conn.asp"--> '数据库连接文件<html><head><meta http-equiv=Content-Type content="text/html;charset=gb2312"><title></title></head>< body><div id="admheader"></div><%dim upfile_5xSoft_StreamdimFilePath,FileMaxSize,FileType,fileweb,nameset,pathset,vfname UpFilePath="../upload/" '上传文件目录FileMaxSize=110000 '文件大小100kbFileType=".jpg.gif" '文件类型fileweb=""nameset =1function makefilename(fname)fname = replace(fname,"-","")fname = replace(fname," ","")fname = replace(fname,":","")fname = replace(fname,"PM","")fname = replace(fname,"AM","")fname = replace(fname,"上午","")fname = replace(fname,"下午","")randomize()makefilename=fname&(int(RND()*10000))end functiondimupload,file,formName,iCount,url,UpFilePath,TypeFlag,fname,File NameStrset upload=new upload_classiCount=0for each formName in upload.file ''列出所有上传了的文件set file=upload.file(formName) ''生成一个文件对象if file.FileSize>0 then ''如果 FileSize > 0 说明有文件数据if FileType<>"" then '如果限制了上传文件类型if Instr(FileType,GetExtendName(file.FileName)) thenTypeFlag = 1 '文件为允许的类型elseTypeFlag = 0 '文件为不允许的类型Response.write "不支持您所上传的文件类型:"Response.write GetExtendName(file.FileName)Response.write "<br>"end ifelseTypeFlag = 1 '没有限制上传文件类型end ifif file.FileSize<FileMaxSize then ''如果未超过文件大小限制if TypeFlag = 1 thenvfname = makefilename(now())if nameset = 1 thenfname = vfname & iCount & "." & GetExtendName(file.FileName)elseif nameset =2 thenfname = file.FileNameelseif nameset = 3 thenfname = vfname & iCount & file.FileNameend iffile.SaveAs Server.mappath(UpFilePath&fname) ''保存文件iCount=iCount+1' fileStr = fileStr & "<a href='"& UpFilePath&file.FileName&"' target='_blank'>查看上传的文件:<font color='red'>" & file.FileName &"</font> ("& file.FileSize &" kb)</a><br>"FileNameStr = UpFilePath&fnamesession("admupiccnt")=fnameend ifelseresponse.write "<center>文件大小超出限制,您最多可以上传100kb的文件"exit forend ifend ifset file=nothingnext'----------------------------------------------------------------------------------------------set upload=nothing ''删除此对象if iCount=0 thenresponse.write "<font color=red>错误!</font> <a href='adm_pc.asp'>返回</a>"response.endend ifsub HtmEnd(Msg)set upload=nothingend subfunction GetExtendName(FileName)dim ExtNameExtName = LCase(FileName)ExtName = right(ExtName,3)ExtName = right(ExtName,3-Instr(ExtName,"."))GetExtendName = ExtNameend functionresponse.write"<script>location.href('adm_pc.asp')</script>"Class upload_classdim Form,File,VersionPrivate Sub Class_InitializedimiStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFor mEnd,theFiledimstrDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePat h,iDivLen,mStrif Request.TotalBytes<1 then Exit Subset Form=CreateObject("Scripting.Dictionary")set File=CreateObject("Scripting.Dictionary")set upfile_5xSoft_Stream=CreateObject("Adodb.Stream") upfile_5xSoft_Stream.mode=3upfile_5xSoft_Stream.type=1upfile_5xSoft_Stream.openupfile_5xSoft_Stream.writeRequest.BinaryRead(Request.T otalBytes)vbEnter=Chr(13)&Chr(10)iDivLen=inString(1,vbEnter)+1strDiv=subString(1,iDivLen)iFormStart=iDivLeniFormEnd=inString(iformStart,strDiv)-1while iFormStart < iFormEndiStart=inString(iFormStart,"name=""")iEnd=inString(iStart+6,"""")mFormName=subString(iStart+6,iEnd-iStart-6)iFileNameStart=inString(iEnd+1,"filename=""")if iFileNameStart>0 and iFileNameStart<iFormEnd theniFileNameEnd=inString(iFileNameStart+10,"""")mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)iStart=inString(iFileNameEnd+1,vbEnter&vbEnter) iEnd=inString(iStart+4,vbEnter&strDiv)if iEnd>iStart thenmFileSize=iEnd-iStart-4elsemFileSize=0end ifset theFile=new FileInfotheFile.FileName=getFileName(mFileName) theFile.FilePath=getFilePath(mFileName) theFile.FileSize=mFileSizetheFile.FileStart=iStart+4theFile.FormName=FormNamefile.add mFormName,theFileelseiStart=inString(iEnd+1,vbEnter&vbEnter)iEnd=inString(iStart+4,vbEnter&strDiv)if iEnd>iStart thenmFormValue=subString(iStart+4,iEnd-iStart-4) elsemFormValue=""end ifform.Add mFormName,mFormValueend ifiFormStart=iformEnd+iDivLeniFormEnd=inString(iformStart,strDiv)-1wendEnd SubPrivate Function subString(theStart,theLen)dim i,c,stempupfile_5xSoft_Stream.Position=theStart-1stemp=""for i=1 to theLenif upfile_5xSoft_Stream.EOS then Exit forc=ascB(upfile_5xSoft_Stream.Read(1))If c > 127 Thenif upfile_5xSoft_Stream.EOS then Exit forstemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.R ead(1)))&ChrB(c)))i=i+1elsestemp=stemp&Chr(c)End IfNextsubString=stempEnd functionPrivate Function inString(theStart,varStr)dim i,j,bt,theLen,strInString=0Str=toByte(varStr)theLen=LenB(Str)for i=theStart to upfile_5xSoft_Stream.Size-theLenif i>upfile_5xSoft_Stream.size then exit Functionupfile_5xSoft_Stream.Position=i-1if AscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1)) thenInString=ifor j=2 to theLenif upfile_5xSoft_Stream.EOS theninString=0Exit forend ifif AscB(upfile_5xSoft_Stream.Read(1))<>AscB(MidB(Str,j,1)) thenInString=0Exit Forend ifnextif InString<>0 then Exit Functionend ifnextEnd FunctionPrivate Sub Class_T erminateform.RemoveAllfile.RemoveAllset form=nothingset file=nothingupfile_5xSoft_Stream.closeset upfile_5xSoft_Stream=nothingEnd SubPrivate function GetFilePath(FullPath) '获取文件路径If FullPath <> "" ThenGetFilePath = left(FullPath,InStrRev(FullPath, "\"))ElseGetFilePath = ""End IfEnd functionPrivate function GetFileName(FullPath) '获取文件名If FullPath <> "" ThenGetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)ElseGetFileName = ""End IfEnd functionPrivate function toByte(Str)dim i,iCode,c,iLow,iHightoByte=""For i=1 To Len(Str)c=mid(Str,i,1)iCode =Asc(c)If iCode<0 Then iCode = iCode + 65535If iCode>255 TheniLow = Left(Hex(Asc(c)),2)iHigh =Right(Hex(Asc(c)),2)toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh) ElsetoByte = toByte & chrB(AscB(c))End IfNextEnd functionEnd ClassClass FileInfodim FormName,FileName,FilePath,FileSize,FileStart Private Sub Class_InitializeFileName = ""FilePath = ""FileSize = 0FileStart= 0FormName = ""End SubPublic function SaveAs(FullPath)dim dr,ErrorChar,iSaveAs=1if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit functionif FileStart=0 or right(fullpath,1)="/" then exit functionset dr=CreateObject("Adodb.Stream")dr.Mode=3dr.Type=1dr.Openupfile_5xSoft_Stream.position=FileStart-1upfile_5xSoft_Stream.copyto dr,FileSizedr.SaveToFile FullPath,2dr.Closeset dr=nothingSaveAs=0end functionEnd Class%>另附:页面中嵌入上传页代码<iframe src="adm_pc.asp" frameborder="0" scrolling="No" width="400" height="24"></iframe>。
在中如何进行文件上传上传文件的步骤:首先,从客户端取得上传的文件,然后,我们将它放入数据流; 第二,服务器端读取数据流,然后将其保存到缓存;第三,将缓存数据保存到数据库;第一步首先我们要实现用户在浏览器端自由选择文件,然后上传,这里用户选择文件,当然是要求标准的Windows方式,所以,我们在这里使用Form的File 文件组件来给用户选择文件。
注意,因为上传文件,所以,在Form的属性设置的时候,我们应该设置为:multipart/form-data,这样,才可以正确上传文件。
下面是上传页面的主要代码:第二步我们可以将上传的文件通过数据流保存到缓存,缓存的大小和文件的具体大小相同,我们可以使用以下的代码来取得文件的具体大小:int intDocLen = txtFileContents.PostedFile.ContentLength;然后,我们可以设置缓存的具体大小了:byte[] Docbuffer = new byte[intDoclen];这样设置以后,我们可以将上传文件的内容保存到缓存中:Stream objStream;objStream = txtFileContents.PostedFile.InputStream;objStream.Read(Docbuffer,0,intDocLen);在以上代码中,读取缓存的时候,从缓存的0位置开始,直到整个文件的长度,其实,这就是整个文件或者整个缓存的大小。
第三步现在我们需要做的就是将缓存数据保存到数据库,我们已经直到数据表结构,这样,我们通过编写简单的SQL语句就可以实现这个功能。
在上面的内容中,我们编写了一个存储过程,在程序中,我们只要建立SqlCommand对象并且将这个存储过程传递给它,并设置@Doc 参数取得缓存数据就可以了:cmdUploadDoc = new SqlCommand( uSP_BooksUploadFile ,BooksConn);mandType = CommandType.StoredProcedure;cmdUploadDoc.Parameters.Add( @Title ,SqlDbType.VarChar,2 00);cmdUploadDoc.Parameters.Add( @Doc ,SqlDbType.Image); cmdUploadDoc.Parameters.Add( @DocType ,SqlDbType.VarC har,4);cmdUploadDoc.Parameters[0].Value = txtTitle.Text;cmdUploadDoc.Parameters[1].Value = Docbuffer;cmdUploadDoc.Parameters[2].Value = strDocType;点击按钮处理代码private void btnSubmit_Click(object sender, System.EventArgs e){string strDocExt;//strDocType用于保存上传文件的类型string strDocType;//用于保存文件大小int intDocLen;//Stream用于读取上传数据Stream objStream; SqlConnection BooksConn; SqlCommand cmdUploadDoc;if(IsValid){if(txtFileContents.PostedFile != null) {//文件类型。
asp下轻松实现将上传图⽚到数据库的代码轻松实现将上传图⽚到数据库很久就想⾃⼰写⼀写程序了,不过由于赖就不想写我,今天刚好有空,所以写了这个⼩⼩的程序很容易⼀看就知道的,不多说了就此开始: 我们做⼀个上传的。
数据据库的字段就id⾃动编号 big 字段类型是 OLE 呵呵就简单的那个字段好了 uppic.asp上传程序名 <% dim rs dim formsize,formdata,bncrlf,divider,datastart,dataend,mydata 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)'上⾯总共是取得图⽚的⼆进制数据 %> <!--#include file="conn.asp"--> <% sql="select * from pic order by id desc" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open sql,conn,3,2 rs.addnew rs("big").appendchunk mydata '增加到数据库中 rs.update set rs=nothing set conn=nothing %> 接下来是显⽰图⽚ display.asp <!--#include file="conn.asp"--> '这个⼤家都知道吧,他就是与数据库连的⼀个程序了 <% id=request("id") set rs=server.createobject("ADODB.recordset") sql="select * from pic where id=" & id rs.open sql,conn,1,1 Response.ContentType = "text/html" '显⽰图⽚的格式也可以⽤ 'Response.ContentType = "image/gif" 以gif显⽰ 'Response.ContentType = "image/jpg" 以jpg显⽰ Response.BinaryWrite rs("big") '显⽰图⽚ rs.close set rs=nothing set connGraph=nothing %>。
用纯ASP代码实现图片上传到指定文件夹并存入数据库中的代码用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服务器恐怕是遇见最多的问题了,尤其是上传图片,比如你想要在自己的社区里面实现类似网易虚拟社区提供的“每日一星”的功能,就要提供给网友上传照片的功能。
上传图片文件到服务器可以使用各种免费的文件上传组件,使用起来功能虽然很强大,但是由于很多情况下,我们只能使用免费的支持ASP的空间或者租用别人的虚拟空间,对于第一种情况,我们根本就没有可能来使用文件上传组件;至于第二种情况,我们也要付出不少的“银子”才可以。
除非你拥有自己的虚拟主机,你就可以随便的在服务器上面安装自己所需要的组件,这种情况对于大多数人来说是可望而不可及的。
那我们就没有办法了吗?呵呵,答案是肯定的(当然是肯定的了,要不然我也没法写出这篇文章啊)。
下面就让我们一起来使用纯ASP代码来实现图片的上传以及保存到数据库的功能(顺便也实现显示数据库中的图片到网页上的功能)。
首先我们先来熟悉一下将要使用的对象方法。
我们用来获取上一个页面传递过来的数据一般是使用Request对象。
同样的,我们也可以使用Request对象来获取上传上来的文件数据,使用的方法是Request.BinaryRead()。
而我们要从数据库中读出来图片的数据显示到网页上面要用到的方法是:Request.BinaryWrite()。
在我们得到了图片的数据,要保存到数据库中的时候,不可以直接使用Insert语句对数据库进行操作,而是要使用ADO的AppendChunk方法,同样的,读出数据库中的图片数据,要使用GetChunk 方法。
各个方法的具体语法如下:* Request.BinaryRead语法:variant = Request.BinaryRead(count)参数variant返回值保存着从客户端读取到数据。
count指明要从客户端读取的数据量大小,这个值小于或者等于使用方法Request.TotalBytes得到的数据量。