I tried making some upload modules like you did and I ended up having problems with big files and bmps. I would strongly recommend using a third party upload module as they can really speed things up.
Main Topics
Browse All TopicsIn need of some help and I'm new to ASP. I can't use one of the uploaders on the market because the client can't install the needed stuff, and plus I have this mostly working.
I can upload seemingly just about any file, except a JPG. I only want to allow extensions of GIF, JPG, and JPEG, and I can't figure out for the life of me why this code hangs when uploading a JPG, but GIF is working fine.
This wasn't my original code, but I can't remember where I found it. I've changed it a bit, but like I said evthing but jpg works. I know its a lot to sift through, but based on my experience in other web technologies, I would assume its a lot easier than 500 points would sugguest.
Thanks for all your help
Please advise.
Code for the form (choosefile.asp):
<!--#include file="header.asp"-->
<form action="filePost.asp" enctype="multipart/form-da
Pick a file to upload:<br/>
<input type="file" name="test" size="50" />
<br />
<!---input type="radio" name="filename" value="original" checked />
Use filename from disk
<br />
<input type="radio" name="filename" value="userSpecified" />
Use the following name:
<input type="text" name="userSpecifiedName" value="" /--->
input type="hidden" name="userSpecifiedName">
<input type="hidden" name="filename" value="original">
<br/>
Link to: <br/>
<input type="text" name="linkto" size="50" value="http://">
<input type="submit" value="Upload Ad" />
</form>
<!--#include file="footer.asp"-->
Code for the upload page (filepost.asp):
<!--#include file="header.asp"-->
<%
'Adjust this depending on the size of the files you'll
'be expecting; longer timeout for larger files!
Server.ScriptTimeout = 5400
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
'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,nInde
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.Di
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("Scrip
'file extension
sPos = InStrRev(myRequestFiles(0,
extension = mid(myRequestFiles(0, 2), sPos + 1)
if lcase(extension) = "jpg" or lcase(extension) = "gif" or lcase(extension) = "jpeg" then
Set cn = Server.CreateObject("ADODB
Set rs = Server.CreateObject("ADODB
sql = "select max(id) from adverts "
cn.Open connectString
rs.Open sql, cn, 1
if isnumeric(rs.fields(0)) then
newFileNum=rs.fields(0)+1
else
newFileNum=1
end if
finalFileName="ad" & newFileNum & "." & extension
FilePath = "./images/ad" & newFileNum & "." & extension
response.Write("'" & filepath & "'")
rs.close
cn.close
'SavePath = Server.MapPath(FilePath)
'Set SaveFile = lf.CreateTextFile(SavePath
'SaveFile.Write(myRequestF
'SaveFile.Close
'insert the ad
'Set objConn = Server.CreateObject("ADODB
' -- Open the Connection
'objConn.Open connectString
'sql = "insert into adverts (aduserid,filename,linkto)
' & session("aduserid") & ", '" & finalFileName & "', '" & myRequest("linkto") & "')"
' - Execute
'response.Write(sql)
'objConn.Execute (sql)
'objConn.Close
'set objConn = Nothing
else
ErrMsg = "The advertisement must be a JPG or GIF."
end if
'IIS may hang if you don't explicitly return SOMETHING.
'So, redirect to another page or provide some kind of
'feedback below...
%>
<% If ErrMsg = "" Then %>
Your advertisement has been uploaded. Don't forget to <a href="purchase.asp">purcha
<% Else %>
<%= ErrMsg %>
Please <a href="javascript:history.g
<% End If %>
<!--#include file="footer.asp"-->
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
Maybe this would help:
It's a free asp upload class, no component required:
http://freeaspupload.net/
Hi There,
Are you using IIS6.0 as your web serverif so, there is a setting on the server that controls the size of files you can upload.
To work around this problem, follow these steps:
1. At a command prompt, type net stop iisadmin. (You need to stop the service in order to update the file.)
2. locate your IIS metabase.xml file see (http://www.microsoft.com/
3. Find the entry for AspMaxRequestEntityAllowed
4. save the changes and restart IIS.
Business Accounts
Answer for Membership
by: substandPosted on 2005-11-23 at 10:25:05ID: 15352292
PS: Crap, I forgot to uncomment the lines at the bottom that save the file and such, but that's not the problem. I thought if I could comment them out, they might be causing the hang and it would work. But even when they are commented out, the page hangs forever.
I think the smallest file I tested on was 134 k
...
Wow, just tested it on a tiny file and it worked.
I wasn't aware it would take 6+ mins (the longest I waited before restarting IIS) to upload from my desktop to my local area network a 134k file.
In that case, is there a way to speed up the process? Do I need to make the timeout at the top longer?