Upload | explain | Upload this question is not a new problem, online also have a lot of tutorials, but most of the people to give the fish, and not to give people fishing, after hard data collection, thinking, debugging, finishing, I have basically made this problem from the principle of clear, now based on my own understanding, on the basis of the sample procedure , to explain, I hope to be able to help some netizens.
I ask you to correct the mistakes and the bad.
I want to start with a simple, single picture file saved to the database.
This example consists of three ASP files and one database (a table), all in the same directory.
1, Tblimage table structure (ACCESS 2000)
SN AutoNumber serial Number
Content-type Text Picture Type
Image OLE Object picture data
2, simpleimagetodata.asp: Upload the form and save the picture to the Database Code section, the main document.
<%@ Language=vbscript%>
<% Option Explicit%>
<%
' precipitates the file name from a full path
function Getfilenamefrompath (strpath)
Getfilenamefrompath = Mid (Strpath,instrrev (strpath, "\") +1)
End Function
' Define the database connection string
Dim cnstr
Cnstr = "Driver={microsoft Access driver (*.mdb)};d bq=" & Server. MapPath ("./upload.mdb")
%>
<HTML>
<HEAD>
<title> single image Save to database </title>
<meta http-equiv= "Content-type" content= "text/html; charset=gb2312 ">
</HEAD>
<body>
<p><a href= "simpleimagetodata.asp" > Upload picture </a>
<a href= "showimagelistfromdata.asp" > Show pictures </a>
<%
If request. ServerVariables ("request_method") = "POST" Then
Dim scome, SGo, Bindata, strdata
Dim PosB, PosE, POSSB, Posse
Dim Bincrlf
Dim strpath, strFileName, Strcontenttype
Bincrlf = ChrB &CHRB (10) ' defines a single byte carriage return line feed
Set scome = Server. CreateObject ("ADODB.stream")
Scome.type = 1 ' Specifies the return data type adtypebinary=1,adtypetext=2
Scome.mode = 3 ' specifies open mode admoderead=1,admodewrite=2,admodereadwrite=3
Scome.open
Scome.write request. BinaryRead (Request. TotalBytes)
scome.position = 0
Bindata = Scome.read
' Response. BinaryWrite bindata ' debug with: Show all submitted data
' Response. Write "
Set sGo = Server. CreateObject ("ADODB.stream")
Sgo.type = 1
Sgo.mode = 3
Sgo.open
PosB = 1
PosB = INSTRB (POSB,BINDATA,BINCRLF)
PosE = INSTRB (POSB+1,BINDATA,BINCRLF)
' Response. Write PosB & "|" & PosE & "<br>"
Scome.position = posb+1
Scome.copyto sgo,pose-posb-2
sgo.position = 0
Sgo.type = 2
Sgo.charset = "gb2312"
Strdata = Sgo.readtext
Sgo.close
' Response. Write strdata & "
POSSB = 1
POSSB = InStr (Possb,strdata, "filename=" "") + len ("Filename=" "")
Posse = InStr (Possb,strdata, "" "")
If Posse > Possb Then
strpath = Mid (STRDATA,POSSB,POSSE-POSSB)
' Response. Write "Local Path:" & strpath & "<br>"
' Response. Write "FileName:" & Getfilenamefrompath (strpath) & "<br>"
PosB = PosE
PosE = INSTRB (POSB+1,BINDATA,BINCRLF)
' Response. Write PosB & "|" & PosE & "<br>"
Sgo.type = 1
Sgo.mode = 3
Sgo.open
Scome.position = PosB
Scome.copyto sgo,pose-posb-1
sgo.position = 0
Sgo.type = 2
Sgo.charset = "gb2312"
Strdata = Sgo.readtext
Sgo.close
Strcontenttype = Mid (strdata,16) ' here because fixed, so omit lookup:-)
' Response. Write "Picture type:" & Strcontenttype & "
PosB = pose+2
PosE = INSTRB (POSB+1,BINDATA,BINCRLF)
' Response. Write PosB & "|" & PosE & "<br>"
Sgo.type = 1
Sgo.mode = 3
Sgo.open
Scome.position = posb+1
Scome.copyto sgo,pose-posb-2
sgo.position = 0
Strdata = Sgo.read
Sgo.close
' Response. Write LenB (strdata) & "<br>"
Dim cn, RS, SQL
Set cn = Server. CreateObject ("Adodb.connection")
cn. Open cnstr
Set rs = server. CreateObject ("Adodb.recordset")
sql = "SELECT * FROM Tblimage"
Rs. Open sql,cn,1,3
Rs. AddNew
Rs. Fields ("Content-type"). Value = Strcontenttype
Rs. Fields ("image"). AppendChunk strdata
Rs. Update
Rs. Close
Set rs = Nothing
&nbs