NinjaTurtle
01-10-2003, 02:19 AM
dear,
i am doing a user registration form tat allow user upload their Personal info and their pictures, if i use a simple Upload script, i will get error saying that Reaponse.write cannot be use, later i found another script that using a lot of ASP script (MyRequest...).
it is workable, but how can i check the image size? height? width? bcos i want to force them not trying to upload picture that size is larger than 500KB, Height not more than 200 and width 300....
how to get these? i search many web sites, but still cannot found, all is component or dll.... any pure ASP????
this is the following Upload script i used:
Server.ScriptTimeout = 5400
dim Crlf, Postdata
dim spos,endpos
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, nIndex,ContentType,ctArray,ErrMsg,bArray,Boundary,FormData
biData = Request.BinaryRead(Request.TotalBytes)
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 FileCount,InfoEnd,varInfo,x,varValue
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 = "Error/Wrong encoding type!"
End If
And i found that when i upload a bigger size >200KB the page will need longer longer time to process. And how to force them just only can upload JPG and Gif filt type only? .... Any script that more easier?
i am doing a user registration form tat allow user upload their Personal info and their pictures, if i use a simple Upload script, i will get error saying that Reaponse.write cannot be use, later i found another script that using a lot of ASP script (MyRequest...).
it is workable, but how can i check the image size? height? width? bcos i want to force them not trying to upload picture that size is larger than 500KB, Height not more than 200 and width 300....
how to get these? i search many web sites, but still cannot found, all is component or dll.... any pure ASP????
this is the following Upload script i used:
Server.ScriptTimeout = 5400
dim Crlf, Postdata
dim spos,endpos
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, nIndex,ContentType,ctArray,ErrMsg,bArray,Boundary,FormData
biData = Request.BinaryRead(Request.TotalBytes)
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 FileCount,InfoEnd,varInfo,x,varValue
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 = "Error/Wrong encoding type!"
End If
And i found that when i upload a bigger size >200KB the page will need longer longer time to process. And how to force them just only can upload JPG and Gif filt type only? .... Any script that more easier?