Wrox Home  
Search P2P Archive for: Go

  Return to Index  

access_asp thread: upload images to database....


Message #1 by "BLaCk PhOeNiX" <phoenix1310@h...> on Wed, 25 Sep 2002 10:41:43 +0800
hello.....
can anybody help me......how to upload images to database...i use MS 
Access...
thanx very much.....




_________________________________________________________________
MSN Photos is the easiest way to share and print your photos: 
http://photos.msn.com/support/worldwide.aspx

Message #2 by "damian lynch" <damian.lynch@o...> on Thu, 26 Sep 2002 12:16:29
This works but can be quite slow, try using pure asp upload much faster
http://www.pstruh.cz/help/ScptUtl/library.htm

DAmo

<%
'Adjust this depending on the size of the files you'll
'be expecting; longer timeout for larger files!
Server.ScriptTimeout = 50000

Const ForWriting = 2
Const TristateTrue = -1
CrLf = Chr(13) & Chr(10)

'This function retreives a field's name
Function GetFieldName(infoStr)
	sPos = InStr(infoStr, "name=")
	EndPos = InStr(sPos + 6, infoStr, Chr(34) & ";")
	If EndPos = 0 Then
		EndPos = inStr(sPos + 6, infoStr, Chr(34))
	End If
	GetFieldName = Mid(infoStr, sPos + 6, endPos - _
		(sPos + 6))
End Function

'This function retreives a file field's filename
Function GetFileName(infoStr)
	sPos = InStr(infoStr, "filename=")
	EndPos = InStr(infoStr, Chr(34) & CrLf)
	GetFileName = Mid(infoStr, sPos + 10, EndPos - _
		(sPos + 10))
End Function

'This function retreives a file field's MIME type
Function GetFileType(infoStr)
	sPos = InStr(infoStr, "Content-Type: ")
	GetFileType = Mid(infoStr, sPos + 14)
End Function

'Yank the file (and anything else) that was posted
PostData = ""
Dim biData
biData = Request.BinaryRead(Request.TotalBytes)
'Careful! It's binary! So, let's change it into
'something a bit more manageable.
For nIndex = 1 to LenB(biData)
	PostData = PostData & Chr(AscB(MidB(biData,nIndex,1)))
Next

'Having used BinaryRead, the Request.Form collection is
'no longer available to us. So, we have to parse the
'request variables ourselves!
'First, let's find that encoding type!
ContentType = Request.ServerVariables( _
	"HTTP_CONTENT_TYPE")
ctArray = Split(ContentType, ";")
'File posts only work well when the encoding is 
'"multipart/form-data", so let's check for that!
If Trim(ctArray(0)) = "multipart/form-data" Then
	ErrMsg = ""
	' grab the form boundary...
	bArray = Split(Trim(ctArray(1)), "=")
	Boundary = Trim(bArray(1))
	'Now use that to split up all the variables!
	FormData = Split(PostData, Boundary)
	'Extract the information for each variable and its data
	Dim myRequest, myRequestFiles(9, 3) 
	Set myRequest = CreateObject("Scripting.Dictionary")
	FileCount = 0
	For x = 0 to UBound(FormData)
		'Two CrLfs mark the end of the information about
		'this field; everything after that is the value
		InfoEnd = InStr(FormData(x), CrLf & CrLf)
		If InfoEnd > 0 Then
			'Get info for this field, minus stuff at the end
			varInfo = Mid(FormData(x), 3, InfoEnd - 3)
			'Get value for this field, being sure to skip
			'CrLf pairs at the start and the CrLf at the end
			varValue = Mid(FormData(x), InfoEnd + 4, _
				Len(FormData(x)) - InfoEnd - 7)
			'Is this a file?
			If (InStr(varInfo, "filename=") > 0) Then
				'Place it into our files array
				'(While this supports more than one file
				'uploaded at a time we only consider the
				'single file case in this example)
				myRequestFiles(FileCount, 0) = GetFieldName
( _
					varInfo)
				myRequestFiles(FileCount, 1) = varValue
				myRequestFiles(FileCount, 2) = GetFileName
( _
					varInfo)
				myRequestFiles(FileCount, 3) = GetFileType
( _
					varInfo)
				FileCount = FileCount + 1
			Else
				'It's a regular field
				myRequest.add GetFieldName(varInfo), 
varValue
			End If
		End If
	Next
Else
	ErrMsg = "Wrong encoding type!"
End If 

'Save the actual posted file
'If supporting more than one file, turn this into a loop!

Set lf = server.createObject("Scripting.FileSystemObject")
If myRequest("filename") = "original" Then
	'Use the filename that came with the file
	'At this point, you need to determine what sort of
	'client sent the file. Macintoshes only send the file
	'name, with no path information, while Windows clients
	'send the entire path of the file that was selected
	BrowserType = UCase(Request.ServerVariables( _
		"HTTP_USER_AGENT"))
	If (InStr(BrowserType, "WIN") > 0) Then
		'It's Windows; yank the filename off the end!
		sPos = InStrRev(myRequestFiles(0, 2), "\")
		fName = Mid(myRequestFiles(0, 2), sPos + 1)
	End If
	If (InStr(BrowserType, "MAC") > 0) Then
		'It's a Mac. Simple.
		'(Mac filenames can contain characters that are 
		'illegal under Windows, so look out for that!)
		fName = myRequestFiles(0, 2)
	End If
	'If your upload path is different, set that here
	FilePath = "./documents/" & fName
Else
	'Use the user-specified filename instead
	'If your upload path is different, set that here
	FilePath = "./documents/" & myRequest("userSpecifiedName")
End If
SavePath = Server.MapPath(FilePath)
Set SaveFile = lf.CreateTextFile(SavePath, True)
SaveFile.Write(myRequestFiles(0, 1))
SaveFile.Close

'IIS may hang if you don't explicitly return SOMETHING.
'So, redirect to another page or provide some kind of
'feedback below...
%>
'
' paste this into your body text
<% If ErrMsg = "" Then %>
	Thanks for the file! It was yummy!
<% Else %>
	<%= ErrMsg %>
<% End If %>

  Return to Index