[x]
Posted via EE Mobile

Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again.

11/23/2005 at 10:16AM PST, ID: 21641399
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

8.8

Uploading Gifs and Jpegs

Asked by substand in Active Server Pages (ASP)

In 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-data" method="post" name="f" id="f">
         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.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")
      'file extension
      sPos = InStrRev(myRequestFiles(0, 2), ".")
      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.Connection")
            Set rs = Server.CreateObject("ADODB.Recordset")

            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, True)
            'SaveFile.Write(myRequestFiles(0, 1))
            'SaveFile.Close
            
            'insert the ad
            'Set objConn = Server.CreateObject("ADODB.Connection")
      
            ' -- Open the Connection
            'objConn.Open connectString
            'sql = "insert into adverts (aduserid,filename,linkto) values (" _
            '        & 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">purchase time</a> for it to display.
<% Else %>
      <%= ErrMsg %>
      Please <a href="javascript:history.go(-1);">go back</a> and correct the problem.
<% End If %>

<!--#include file="footer.asp"-->
 
Keywords: Uploading Gifs and Jpegs
 
Loading Advertisement...
 
[+][-]11/23/05 10:25 AM, ID: 15352292

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]11/23/05 10:30 AM, ID: 15352324

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 30-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]11/23/05 01:43 PM, ID: 15353577

View this solution now by starting your 30-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

 

About this solution

Zone: Active Server Pages (ASP)
Sign Up Now!
Solution Provided By: SquareHead
Participating Experts: 3
Solution Grade: B
 
 
[+][-]11/25/05 07:31 AM, ID: 15361071

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 30-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]11/29/05 11:11 AM, ID: 15382576

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]12/26/05 08:48 AM, ID: 15551273

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
 
Loading Advertisement...
20090824-EE-VQP-74