ASP实现多图片上传到指定的目录并存到数据库

上传|数据|数据库

  关于图片上传的例子在网上有很多文章和原代码。但是每次上论坛浏览帖子的时候都是看到很多网友对图片上传感到头疼和麻烦。其实这个问题也是曾经让我感到头疼。也看过了不少的文章和代码。现在我写的这篇文章是把我比较喜欢的一篇代码和动网里的高手对这篇代码优化后再加上我增加一些代码结合出来的!呵呵,其实这篇文章是沾了写这篇代码的人(稻香居士)和动网里那些高手的光。:)

  好了,不说废话了。开始来搭建所需要的环境和数据结构!

  先新建一个名字叫photo的文件夹。(我在这里就是把图片上传到这个文件夹里的。)建立一个名字叫database的数据库。再接着建立一个名字叫sFile的表。表里设计四个字段分别是id(int),image(varchar),image1(varchar),image2(varchar)。我这里用的数据库是SQL。

  相关的文件

  register.asp

<html>
<head>
<title>文件</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form name="form1" method="post" action="save.asp">
<table width="50%" border="1" cellspacing="0" cellpadding="0" align="center">
<tr> 
<td width="20%"><a href="#" >图片上传</a></td>
<td width="80%"> 
<input type="text" name="myface">
<input type="text" name="myface1">
<input type="text" name="myface2">
(此处用户不必填图片上传后自动生成) </td>
</tr>
<tr> 
<td colspan="2" align="center"> 
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="重设">
</td>
</tr>
</table>
</form>
</body>
</html>

  reg_upload.asp

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="css/style.css" type="text/css">
</head>
<body leftmargin="0" topmargin="0" >
  <br>
<br>
<br>
<table width="90%" border="0" align="center" bgcolor="#000000" height="152" cellspacing="1">
<tr> 
<td height="34" align="center" bgcolor="#FFFFFF"><font color="#FFFF33"><b><font size="4" color="#000000">选择图片</font></b></font></td>
</tr>
<tr> 
<td bgcolor="#FFFFFF"> 
<form name="form" method="post" action="upfile.asp" enctype="multipart/form-data" >
<input type="hidden" name="filepath" value="photo">
<input type="hidden" name="act" value="upload">
<input type="file" name="file1" size="30"><br>
<input type="file" name="file2" size="30"><br>
<input type="file" name="file3" size="30">

<input type="submit" name="Submit" value="粘 贴" class="tl">
</form>
</td>
</tr>
</table>
</body>
</html>

  upfile.asp

<!--#include FILE="upload.inc"-->
<html>
<head>
<title>文件上传</title>
</head>
<body>
<%
dim arr(3)
dim upload,file,formName,formPath,iCount,filename,fileExt,i
set upload=new upload_5xSoft ''''建立上传对象

formPath=upload.form("filepath")
''''在目录后加(/)
if right(formPath,1)<>"/" then formPath=formPath&"/" 
iCount=0
i=0
for each formName in upload.file ''''列出所有上传了的文件
set file=upload.file(formName) ''''生成一个文件对象

if file.filesize<0 then
response.write "<font size=2>请先选择你要上传的图片 [ <a href=# onclick=history.go(-1)>重新上传</a> ]</font>"
response.end
end if

if file.filesize>100000 then
response.write "<font size=2>图片大小超过了限制 [ <a href=# onclick=history.go(-1)>重新上传</a> ]</font>"
response.end
end if
if fileEXT<>".gif" and fileEXT<>".jpg" then
response.write "<font size=2>文件格式不对 [ <a href=# onclick=history.go(-1)>重新上传</a> ]</font>"
response.end
end if 

fileExt=lcase(right(file.filename,4))
filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&file.FileName
arr(i)=filename
i=i+1

if file.FileSize>0 then ''''如果 FileSize > 0 说明有文件数据
file.SaveAs Server.mappath(filename) ''''保存文件
'' response.write file.FilePath&file.FileName&" ("&file.FileSize&") => "&formPath&File.FileName&" 成功!<br>"

iCount=iCount+1
end if
set file=nothing
next
if instr(arr(0),".")=0 and instr(arr(1),".")=0 and instr(arr(2),".")=0 then
response.write "<font size=2>请先选择你要上传的图片 [ <a href=# onclick=history.go(-1)>重新上传</a> ]</font>"
response.end
end if
if instr(arr(0),".")<>0 then
response.write "<script>opener.document.forms[0].myface.value=''" & arr(0) & "''</script>"
else
response.write "<script>opener.document.forms[0].myface.value=''''</script>"
end if
if instr(arr(1),".")<>0 then
response.write "<script>opener.document.forms[0].myface1.value=''" & arr(1) & "''</script>"
else
response.write "<script>opener.document.forms[0].myface1.value=''''</script>"
end if
if instr(arr(2),".")<>0 then
response.write "<script>opener.document.forms[0].myface2.value=''" & arr(2) & "''</script>"
else
response.write "<script>opener.document.forms[0].myface2.value='''' </script>"
end if
set upload=nothing ''''删除此对象

session("upface")="done"

Htmend iCount&" 个文件上传结束!"

sub HtmEnd(Msg)
set upload=nothing
response.write "<html><head><meta http-equiv=''Refresh'' content=''3 url=""javascript:window.close();""''></head><body><center><br><br>文件上传成功<br>谢谢你的支持!<br>本窗口三秒后自动关闭</center></body></html>"
response.end
end sub
%>
</body>
</html>

  upload.inc

<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>

dim upfile_5xSoft_Stream

Class upload_5xSoft

dim Form,File,Version

Private Sub Class_Initialize 
dim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile
dim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr
Version=""
if Request.TotalBytes<1 then Exit Sub
set Form=CreateObject("Scripting.Dictionary")
set File=CreateObject("Scripting.Dictionary")
set upfile_5xSoft_Stream=CreateObject("Adodb.Stream")
upfile_5xSoft_Stream.mode=3
upfile_5xSoft_Stream.type=1
upfile_5xSoft_Stream.open
upfile_5xSoft_Stream.write Request.BinaryRead(Request.TotalBytes)

vbEnter=Chr(13)&Chr(10)
iDivLen=inString(1,vbEnter)+1
strDiv=subString(1,iDivLen)
iFormStart=iDivLen
iFormEnd=inString(iformStart,strDiv)-1
while iFormStart < iFormEnd
iStart=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 then
iFileNameEnd=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 then
mFileSize=iEnd-iStart-4
else
mFileSize=0
end if
set theFile=new FileInfo
theFile.FileName=getFileName(mFileName)
theFile.FilePath=getFilePath(mFileName)
theFile.FileSize=mFileSize
theFile.FileStart=iStart+4
theFile.FormName=FormName
file.add mFormName,theFile
else
iStart=inString(iEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)

if iEnd>iStart then
mFormValue=subString(iStart+4,iEnd-iStart-4)
else
mFormValue="" 
end if
form.Add mFormName,mFormValue
end if

iFormStart=iformEnd+iDivLen
iFormEnd=inString(iformStart,strDiv)-1
wend
End Sub

Private Function subString(theStart,theLen)
dim i,c,stemp
upfile_5xSoft_Stream.Position=theStart-1
stemp=""
for i=1 to theLen
if upfile_5xSoft_Stream.EOS then Exit for
c=ascB(upfile_5xSoft_Stream.Read(1))
If c > 127 Then
if upfile_5xSoft_Stream.EOS then Exit for
stemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c)))
i=i+1
else
stemp=stemp&Chr(c)
End If
Next
subString=stemp
End function

Private Function inString(theStart,varStr)
dim i,j,bt,theLen,str
InString=0
Str=toByte(varStr)
theLen=LenB(Str)
for i=theStart to upfile_5xSoft_Stream.Size-theLen
if i>upfile_5xSoft_Stream.size then exit Function
upfile_5xSoft_Stream.Position=i-1
if AscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1)) then
InString=i
for j=2 to theLen
if upfile_5xSoft_Stream.EOS then 
inString=0
Exit for
end if
if AscB(upfile_5xSoft_Stream.Read(1))<>AscB(MidB(Str,j,1)) then
InString=0
Exit For
end if
next
if InString<>0 then Exit Function
end if
next
End Function

Private Sub Class_Terminate 
form.RemoveAll
file.RemoveAll
set form=nothing
set file=nothing
upfile_5xSoft_Stream.close
set upfile_5xSoft_Stream=nothing
End Sub
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

Private function toByte(Str)
dim i,iCode,c,iLow,iHigh
toByte=""
For i=1 To Len(Str)
c=mid(Str,i,1)
iCode =Asc(c)
If iCode<0 Then iCode = iCode + 65535
If iCode>255 Then
iLow = Left(Hex(Asc(c)),2)
iHigh =Right(Hex(Asc(c)),2)
toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)
Else
toByte = toByte & chrB(AscB(c))
End If
Next
End function
End Class

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

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

  save.asp

<% dim dsn,conn
dsn="driver={sql server};server=127.0.0.1;uid=sa;pwd=;database=database"
set conn=server.createobject("adodb.connection")
conn.open dsn
%>
<% dim file,file1,file2
file=trim(request.form("myface"))
file1=trim(request.form("myface1"))
file2=trim(request.form("myface2"))
set rs=server.createobject("adodb.recordset")
sql="Insert Into sFile(image,image1,image2) Values(''"& file &"'',''"& file1&"'',''"& file2&"'')" 
conn.execute(sql)
response.redirect "ok.asp"
%>

时间: 2024-11-02 01:29:13

ASP实现多图片上传到指定的目录并存到数据库的相关文章

用ASP实现多图片上传到指定的目录并存到数据库

上传|数据|数据库 关于图片上传的例子在网上有很多文章和原代码.但是每次上论坛浏览帖子的时候都是看到很多网友对图片上传感到头疼和麻烦.其实这个问题也是曾经让我感到头疼.也看过了不少的文章和代码.现在我写的这篇文章是把我比较喜欢的一篇代码和动网里的高手对这篇代码优化后再加上我增加一些代码结合出来的!呵呵,其实这篇文章是沾了写这篇代码的人(稻香居士)和动网里那些高手的光.:)好了,不说废话了.开始来搭建所需要的环境和数据结构!先新建一个名字叫photo的文件夹.(我在这里就是把图片上传到这个文件夹里

多图片上传到指定的目录并存到数据库

关于图片上传的例子在网上有很多文章和原代码.但是每次上论坛浏览帖子的时候都是看到很多网友对图片上传感到头疼和麻烦.其实这个问题也是曾经让我感到头疼.也看过了不少的文章和代码.现在我写的这篇文章是把我比较喜欢的一篇代码和动网里的高手对这篇代码优化后再加上我增加一些代码结合出来的!呵呵,其实这篇文章是沾了写这篇代码的人(稻香居士)和动网里那些高手的光.:)好了,不说废话了.开始来搭建所需要的环境和数据结构!先新建一个名字叫photo的文件夹.(我在这里就是把图片上传到这个文件夹里的.)建立一个名字叫

使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来

asp.net|server|sqlserver|上传|显示 1,使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来一,上传并存入SqlServer 数据库结构  create table test  {     id identity(1,1),     FImage image  }  相关的存储过程  Create proc UpdateImage  (     @UpdateImage Image  )  As  Insert Into te

怎么运用asp.net制作图片上传,修改,增加,删除,和手动播放,和自动播放。

问题描述 怎么运用asp.net制作图片上传,修改,增加,删除,和手动播放,和自动播放. 解决方案 解决方案二:参考解决方案三:这是要做毕业设计了吗解决方案四:给啥啊,让他自生自灭解决方案五:引用2楼我本良人的回复: 这是要做毕业设计了吗 课程设计,不是毕业,解决方案六:引用1楼EdsionWang的回复: 参考 可以私聊呢.1076616683解决方案七:引用1楼EdsionWang的回复: 参考 可以私聊呢,1076616683

asp.net在图片上传的时候怎么给上传的图片在右下角添加图片水印

问题描述 asp.net在图片上传的时候怎么给上传的图片在右下角添加图片水印,希望有具体的的实现步骤和可行的代码实例 解决方案 解决方案二: 解决方案三:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Drawing;usingSystem.IO;usingSystem.Drawing.Imaging;usingSystem.Web;usingSystem.Drawing.Drawing2D;usi

asp.net文件图片上传带预览效果

asp教程.net文件图片上传带预览效果 图片预览主要包括两个部分:从file表单控件获取图像数据,根据数据显示预览图像. 程序的file和img属性就是用来保存file控件和显示预览图像的容器的,而img还必须是img元素. 程序有以下几种预览方式: simple模式:直接从file的value获取图片路径来显示预览,适用于ie6: filter模式:通过selection获取file的图片路径,再用滤镜来显示预览,适用于ie7/8: domfile模式:调用file的getAsDataURL

ASP.NET MVC图片上传前预览简单实现_实用技巧

本文实例为大家分享了图片上传前预览并获取图片文件名和图片字节大小的具体实现代码,供大家参考,具体内容如下 在控制器中创建一个Action: 在Views目录下对应的控制器名称下创建视图PreViewing: 上图中 标记1,引用jQuery类库.标记2,选择文件.标记3,预览图片.标记4,显示图片文件名和图片字节大小.标记5,是Javascript代码...... 本例预览: 以上就是本文的全部内容,希望对大家的学习有所帮助.

asp.net将excel上传到服务器再写到sql数据库中的代码错误

问题描述 可以上传到服务器但写不到数据库 解决方案 解决方案二:usingSystem;usingSystem.Collections;usingSystem.Configuration;usingSystem.Data;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.HtmlControls;usingSystem.Web.UI.WebControls;usingSystem.Web.

ASP程序实现图片上传的原理分析及示例

程序|上传|示例   用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服务器恐怕是遇见最多的问题了,尤其是上传图片,比如你想要在自己的社区里面实现类似网易虚拟社区提供的"每日一星"的功能,就要提供给网友上传照片的功能.上传图片文件到服务器可以使用各种免费的文件上传组件,使用起来功能虽然很强大,但是由于很多情况下,我们只能使用免费的支持ASP的空间或者租用别人的虚拟空间,对于第一种情况,我们根本就没有可能来使用文件上传组件:至于第二种情况,我们也要付出不