| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 879 人关注过本帖
标题:我搞不定图片的上传--大家来帮忙看看:
只看楼主 加入收藏
9sex0
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2004-12-31
收藏
 问题点数:0 回复次数:8 
我搞不定图片的上传--大家来帮忙看看:

各位帮忙看下:这段代码为什么无法将图片文件放不进数据库去,红色代码部分是问题嫌疑所在:另外,我的数据表:'发言表',中用于存放图片的字段名是fimg,类型为image,长度16,允许为空,其他字段均测试正常。 <% on error resume next dim iname, iqq, ihomeurl, imail, icontent,itime,imsg,ierror if request("action") = "new" then 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) iname = inohtml(trim(request("name"))) iszid = inohtml(trim(request("szid"))) iqq = inohtml(trim(request("qq"))) ihomeurl = inohtml(trim(request("homeurl"))) imail = inohtml(trim(request("mail"))) ititle = inohtml(trim(request("title"))) icontent = inohtml(trim(request("content"))) iface = request("face") iip = request.servervariables("Remote_Addr") itime = now() strconn = "select * from '发言表'" set rs = server.createobject("adodb.recordset") rs.open strconn, conn, 1, 3 rs.addnew rs("fname") = iname rs("fszid") = iszid rs("fqq") = iqq rs("fhomeurl") = ihomeurl rs("fmail") = imail rs("ftitle") = ititle rs("fcontent") = icontent rs("ftime") = itime rs("fip") = iip rs("fface") = iface rs("fimg").AppendChunk myData '此句用于上传图片到SQLserver,问题嫌疑点之一 rs.update rs.close set rs = nothing if err.number = 0 then response.redirect ("index.asp") else session("imsg") = "2" response.redirect ("msg.asp")'这里是报错页面,如果报错,是说明上传到数据库不成功,表单输入是没有问题的。 end if end if %>

<table> <form method="post" name="input" action="write.asp?action=new"> <tr> <td>代号:</td> <td><input name="szid" id="szid" size="30" maxlength="12" ></td> </tr> <tr> <td>昵称:</span></td> <td><input name="name" type="text" id="name" size="30" maxlength="12" ></td> </tr> <tr> <td>Q Q:</td> <td><input name="qq" type="text" id="qq" size="30" maxlength="10"></td> <td width="273" rowspan="4"><img id="strface" src="images/humen/1.gif"></td> </tr> <tr> <td>主页:</td> <td><input name="homeurl" type="text" id="homeurl" size="30"></td> </tr> <tr> <td>邮箱:</td> <td><input name="mail" type="text" id="mail" size="30"></td> </tr> <tr> <td>头像:</td> <td><select name="face" onChange="document.images['strface'].src=options[selectedIndex].value;"> <% for i=1 to 108 response.write ("<option value='images/humen/" & i & ".gif'>头像" & i & "</option>") next %> </select></td> </tr> <tr> <td>标题:</td> <td><input name="title" type="text" id="title" maxlength="50" ></td> </tr> <tr> <td>留言:</td> <td><textarea name="content" rows="9" id="Message"></textarea></td> </tr> <tr> <td height="30" colspan="5" width="400" align="left">图片上传:<input type="file" name="img"></td> </tr> <tr> <td><input name="提交" type="submit" id="提交" value="提交发言"></td> </tr> </form> </table>

搜索更多相关主题的帖子: 数据库 数据表 
2005-02-04 10:25
9sex0
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2004-12-31
收藏
得分:0 
简言之, 我是用下面这个输入框供用户选择上传图片: <td>图片上传:<input type="file" name="img"></td> 我用下面的这几句取得提交的图片数据:(为什么上传不上去呢?) 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) strconn = "select * from '发言表'" set rs = server.createobject("adodb.recordset") rs.open strconn, conn, 1, 3 rs.addnew rs("fimg").AppendChunk myData '此句用于上传图片到SQLserver,问题嫌疑点之一 rs.update rs.close set rs = nothing
2005-02-04 10:41
blink1313
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-2-6
收藏
得分:0 
好象如果要把图片上传到数据库,就只能上传图片,而不能把图片和其它信息一同上传。
2005-02-06 17:07
zero_one
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2005-2-12
收藏
得分:0 

不是了。你不一定要那样做。上网下载一个无组件上传的asp代码也可以搞定 第一文件叫upfile.asp代码如下: <%response.buffer=true%> <!--#include file="Config.asp" --> <!--#include file="upfile_iframe.asp" -->

<html> <head> <title>文件上传</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link href="Style.css" rel="stylesheet" type="text/css"> </head> <body bgcolor="buttonface" leftmargin="0" topmargin="0"> <% call upfile() response.end %> </body> </html>


---------------------------------------------- 我郁闷,因为学得差劲。
2005-02-12 19:59
zero_one
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2005-2-12
收藏
得分:0 

第二文件,叫:Config.asp <!-- #include file="isuserornot.asp"--> <% '//FileSystemObject对象名称 Const FsoObjectStr="Scripting.FileSystemObject"

'//允许上传的文件类型 Const FileSystem_EnableFileExt="|RAR|ZIP|SWF|EXE|" %>


---------------------------------------------- 我郁闷,因为学得差劲。
2005-02-12 20:00
zero_one
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2005-2-12
收藏
得分:0 

第三个文件:upfile_iframe.asp <%sub upfile()%> <link href="admincss.css" rel="stylesheet" type="text/css">

<style type="text/css"> <!-- .style1 {font-size: 12px} --> </style> <table width="470" height="202" border="0" align="center" cellpadding="0" cellspacing="3" class="box_tblr"> <tr> <td width="557" height="196" align="center" valign="middle"><table width="464" border="0" cellspacing="1" cellpadding="0"> <form action="UpFile_SaveFile.asp" method="post" enctype="multipart/form-data" name="form1" target="_top" onSubmit="return ChkForm(this)"> <tr> <td width="18%" align="right"><span class="style1"><b>文件上传</b>:</span></td> <td width="82%"> <font size="2"> <input name="File1" type="File" class="button1" size="20"> </font></td> </tr> <tr> <td width="18%"><font size="2">&nbsp;</font></td> <td width="82%"> <font size="2"> <input name="Submit" type="submit" class="button1" value="开始上传"> <input name="Submit2" type="button" class="button1" onClick="closeWin()" value="取消"> <script language="JavaScript" type="text/JavaScript"> function closeWin() { top.returnValue=false; top.window.close(); } function ChkForm(Obj) { if(Obj.File1.value==""){ alert("请选择文件"); return false; } Obj.Submit.disabled=true; return true; } </script> </font></td> </tr> <tr> <td width="18%"><font size="2">&nbsp;</font></td> <td width="82%"> <font size="2"> <label for="AutoRename"> </label> </font> <label for="AutoRename"><span class="style1"> <input name="AutoRename" type="checkbox" id="AutoRename" value="1" checked> 自动重命名文件</span></label> </td> </tr> </form> </table> <table width="464" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="2"> <hr size="1" width="100%"> </td> </tr> <tr> <td height="54" valign="middle"> <li class="style1">文件上传速度较慢,请耐心等侍</li> <li class="style1">自动命名的格式为:2003100522040479444</li> <li class="style1">允许上传文件类型:<%=FileSystem_EnableFileExt%></li> </td> </tr> </table></td> </tr> </table> <%end sub%>


---------------------------------------------- 我郁闷,因为学得差劲。
2005-02-12 20:01
zero_one
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2005-2-12
收藏
得分:0 

第四个文件:UpFile_SaveFile.asp ‘注以下session("kj_name")是我自己用来取得上传后系统自己生成的文件名。你可以自己设置。我个人建议你不要把图片放数据库,在数据库中只存入一个路径就可以了,这样可以加快处理,还有减少数据的容量。 <%Option Explicit%> <!-- #include file="isuserornot.asp"--> <!--#include file="upload_5xsoft.asp" --> <!--#include file="Config.asp" --> <% Dim FilePath,Fso FilePath=server.MapPath("kejian")& "\" 关键在这里是设置要上传到那个目录中去 'response.Write filepath 'response.End() 'FilePath=Server.MapPath(DirectoryRoot & Session("FilePath"))

Dim objUpLoad Set objUpLoad = new upload_5xsoft Dim formName,File,AutoRename AutoRename=objUpLoad.Form("AutoRename")="1" For Each formName In objUpLoad.objFile Set File=objUpLoad.objFile(formName) '是否存在重名文件 Set Fso = Server.CreateObject(FsoObjectStr)

If AutoRename=False And Fso.FileExists(FilePath & File.FileName) Then Set Fso=Nothing Response.Write("<script>alert(""<操作失败>\n存在同名文件"");window.close()</script>") Response.End End If

If InStr(FileSystem_EnableFileExt,"|"&UCase(File.FileExt)&"|")=0 Then Response.Write("<script>alert(""<操作失败>\n文件类型不被允许"");window.close()</script>") Response.End End If

If AutoRename Then file.SaveAs FilePath &"\"& Year(Now())&Right("00"&Month(Now()),2)&Right("00"&Day(Now()),2)&Right("00"&Hour(Now()),2)&Right("00"&Minute(Now()),2)&Right("00"&Second(Now()),2)&Round(Timer(),0)&"."&File.FileExt session("kj_name")=Year(Now())&Right("00"&Month(Now()),2)&Right("00"&Day(Now()),2)&Right("00"&Hour(Now()),2)&Right("00"&Minute(Now()),2)&Right("00"&Second(Now()),2)&Round(Timer(),0)&"."&File.FileExt Else file.SaveAs FilePath &"\"& File.FileName session("kj_name")= file.filename End If

Next Set objUpLoad=Nothing Response.Write("<script>alert(""<操作成功>\n文件上传完毕……"");window.close()</script>") %>


---------------------------------------------- 我郁闷,因为学得差劲。
2005-02-12 20:09
zero_one
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2005-2-12
收藏
得分:0 

第五个文件(是一个上传类):upload_5xsoft.asp <% dim Data_5xsoft

Class upload_5xsoft dim objForm,objFile,Version

Public function Form(strForm) strForm=lcase(strForm) if not objForm.exists(strForm) then Form="" else Form=objForm(strForm) end if end function

Public function File(strFile) strFile=lcase(strFile) if not objFile.exists(strFile) then set File=new FileInfo else set File=objFile(strFile) end if end function

Private Sub Class_Initialize dim RequestData,sStart,vbCrlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFile dim iFileSize,sFilePath,sFileType,sFormValue,sFileName dim iFindStart,iFindEnd dim iFormStart,iFormEnd,sFormName Version="化境HTTP上传程序 Version 2.0" set objForm=Server.CreateObject("Scripting.Dictionary") set objFile=Server.CreateObject("Scripting.Dictionary") if Request.TotalBytes<1 then Exit Sub set tStream = Server.CreateObject("adodb.stream") set Data_5xsoft = Server.CreateObject("adodb.stream") Data_5xsoft.Type = 1 Data_5xsoft.Mode =3 Data_5xsoft.Open Data_5xsoft.Write Request.BinaryRead(Request.TotalBytes) Data_5xsoft.Position=0 RequestData =Data_5xsoft.Read

iFormStart = 1 iFormEnd = LenB(RequestData) vbCrlf = chrB(13) & chrB(10) sStart = MidB(RequestData,1, InStrB(iFormStart,RequestData,vbCrlf)-1) iStart = LenB (sStart) iFormStart=iFormStart+iStart+1 while (iFormStart + 10) < iFormEnd iInfoEnd = InStrB(iFormStart,RequestData,vbCrlf & vbCrlf)+3 tStream.Type = 1 tStream.Mode =3 tStream.Open Data_5xsoft.Position = iFormStart Data_5xsoft.CopyTo tStream,iInfoEnd-iFormStart tStream.Position = 0 tStream.Type = 2 tStream.Charset ="gb2312" sInfo = tStream.ReadText tStream.Close '取得表单项目名称 iFormStart = InStrB(iInfoEnd,RequestData,sStart) iFindStart = InStr(22,sInfo,"name=""",1)+6 iFindEnd = InStr(iFindStart,sInfo,"""",1) sFormName = lcase(Mid (sinfo,iFindStart,iFindEnd-iFindStart)) '如果是文件 if InStr (45,sInfo,"filename=""",1) > 0 then set theFile=new FileInfo '取得文件名 iFindStart = InStr(iFindEnd,sInfo,"filename=""",1)+10 iFindEnd = InStr(iFindStart,sInfo,"""",1) sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart) theFile.FileName=getFileName(sFileName) theFile.FilePath=getFilePath(sFileName) theFile.FileExt=GetFileExt(sFileName) '取得文件类型 iFindStart = InStr(iFindEnd,sInfo,"Content-Type: ",1)+14 iFindEnd = InStr(iFindStart,sInfo,vbCr) theFile.FileType =Mid (sinfo,iFindStart,iFindEnd-iFindStart) theFile.FileStart =iInfoEnd theFile.FileSize = iFormStart -iInfoEnd -3 theFile.FormName=sFormName if not objFile.Exists(sFormName) then objFile.add sFormName,theFile end if else '如果是表单项目 tStream.Type =1 tStream.Mode =3 tStream.Open Data_5xsoft.Position = iInfoEnd Data_5xsoft.CopyTo tStream,iFormStart-iInfoEnd-3 tStream.Position = 0 tStream.Type = 2 tStream.Charset ="gb2312" sFormValue = tStream.ReadText tStream.Close if objForm.Exists(sFormName) then objForm(sFormName)=objForm(sFormName)&", "&sFormValue else objForm.Add sFormName,sFormValue end if end if iFormStart=iFormStart+iStart+1 wend RequestData="" set tStream =nothing End Sub

Private Sub Class_Terminate if Request.TotalBytes>0 then objForm.RemoveAll objFile.RemoveAll set objForm=nothing set objFile=nothing Data_5xsoft.Close set Data_5xsoft =nothing end if End Sub

'取得扩展名 Private function GetFileExt(FullPath) If FullPath <> "" Then GetFileExt = mid(FullPath,InStrRev(FullPath, ".")+1) Else GetFileExt = "" End If End function

Private function GetFilePath(FullPath) If FullPath <> "" Then GetFilePath = left(FullPath,InStrRev(FullPath, "\")) Else GetFilePath = "" End If End function Private function GetFileName(FullPath) If FullPath <> "" Then GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1) Else GetFileName = "" End If End function

End Class

Class FileInfo dim FormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt Private Sub Class_Initialize FileExt = "" FileName = "" FilePath = "" FileSize = 0 FileStart= 0 FormName = "" FileType = "" End Sub

Public function SaveAs(FullPath) dim dr,ErrorChar,i SaveAs=true if trim(fullpath)="" or FileStart=0 or FileName="" or right(fullpath,1)="/" then exit function set dr=CreateObject("Adodb.Stream") dr.Mode=3 dr.Type=1 dr.Open Data_5xsoft.position=FileStart Data_5xsoft.copyto dr,FileSize dr.SaveToFile FullPath,2 dr.Close set dr=nothing SaveAs=false end function End Class %>


---------------------------------------------- 我郁闷,因为学得差劲。
2005-02-12 20:11
zero_one
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2005-2-12
收藏
得分:0 
最后要说的,这个几个文件可以上传任何类型的文件。如flash,jpg,gif,wav,mp3,rar,zip,exe。。。。等。
如果你在本地测试时不能上传一些类型的文件。首先看config.asp 如果这里充许上传此类。那么就是你的电脑有问题,我以前就这样,以为是那几个文件出了问题。结果发布在上网测试,一切OK。什么都可以上传。

---------------------------------------------- 我郁闷,因为学得差劲。
2005-02-12 20:15
快速回复:我搞不定图片的上传--大家来帮忙看看:
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047507 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved