• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 599
  • Last Modified:

Using Saveas() method for Ajax asyncupload using VB.NET

I am having trouble to find a VB.NET tutorial on how to use the SaveAs() method for the Ajax AsyncUpload control.

What I need to do when the upload is complete is:
  - I have to either pass a parameter or access a session variable (call the variable "pictype")
  - I need to validate what type the file is ("picformat" - ex: GIF or JPG)
  - I need to validate the width of the image, and rescale it to no more than 150px wide
  - I  need to save the image as a new file name which includes the session variable and fileformat (ex: filename = "pic" & session("pictype") & "01" & "." & picformat  

I need help with these points in my subroutine.

Thanks, Peter
0
pbissegger
Asked:
pbissegger
  • 2
  • 2
2 Solutions
 
Meir RivkinFull stack Software EngineerCommented:
0
 
pbisseggerAuthor Commented:
Although this is in C (not VB), I think I can figure out the SaveAs() functionality from this. Thank you.

Do you have any idea how to address the other points in my message (filetype ? picture width ?)

Thanks, Peter
0
 
Meir RivkinFull stack Software EngineerCommented:
check this post regarding image:

http://forums.asp.net/p/1572277/3943629.aspx
0
 
pbisseggerAuthor Commented:
OK, your last post didn't help ,e out that much, but I have bridged the gap between your inputs and a final solution. Please find attached my final solution.
Sub RescaleImage(ImageFilename as String)
    Nx = 150 ' max width for large thumbnail
    Ny = 150 ' max height for large thumbnail
        
    ' Load the Image
    Dim originalimg As System.Drawing.Image = System.Drawing.Image.FromFile(trim(ImageFilename)) 

    ' Work out the width/height for the thumbnail. Preserve aspect ratio and honour max width/height
    ' Note: if the original is smaller than the thumbnail size it will be scaled up
        
    If originalimg.Width <> Nx then

        ' Need to rescale image
        
        Try
            If (originalimg.Width / Nx) > (originalimg.Width / Ny) Then
                N2 = originalimg.Width
                newWidth = Nx
                newHeight = originalimg.Height * (Nx / N2)
                If newHeight > Ny Then
                    newWidth = newWidth * (Ny / newHeight)
                    newHeight = Ny
                End If
            Else
                N2 = originalimg.Height
                newHeight = Ny
                newWidth = originalimg.Width * (Ny / N2)
                If newWidth > Nx Then
                    newHeight = newHeight * (Nx / newWidth)
                    newWidth = Nx
                End If
            End If
	
            Dim thumb As New Bitmap(newWidth, newHeight)
	
            'Create a graphics object for the thumbnail
            Dim gr_dest As Graphics = Graphics.FromImage(thumb)
	
            ' just in case it's a transparent GIF force the bg to white
            Dim sb = New SolidBrush(System.Drawing.Color.White)
            gr_dest.FillRectangle(sb, 0, 0, thumb.Width, thumb.Height)
	
            ' Re-draw the image to the specified height and width
            gr_dest.DrawImage(originalimg, 0, 0, thumb.Width, thumb.Height)
 
            thumb.Save(ImageFilename, originalimg.RawFormat)
                
            ' House Keeping !
            If Not thumb Is Nothing Then
                thumb.Dispose()
                thumb = Nothing
            End If

            If Not originalimg Is Nothing Then
                originalimg.Dispose()
                originalimg = Nothing
            End If           
                
        Catch
            Outputmessage = "Sorry, there was a problem saving the image."
        End Try

End If
    
End Sub

Protected Sub AsyncFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As EventArgs)
    If AsyncFileUpload1.HasFile then
        ' Determine new file name
        fileExtension = System.IO.Path.GetExtension(AsyncFileUpload1.Filename).ToLower()
        newfilename = "elogo-" & Session("sponsor") & fileExtension
        FolderToSave = Server.MapPath("\") & "Userdata\L-" & Trim(Session("Leaguenum")) & "\Advertisement\"

        ' Validate file is of correct type
        fileOK = False
        Dim allowedExtensions As String() = {".jpg", ".jpeg", ".png", ".gif"}
        For i As Integer = 0 To allowedExtensions.Length - 1
            If fileExtension = allowedExtensions(i) Then
                fileOK = True
            End If
        Next
        
        ' Save the file    
        If fileOK Then
            Try
                AsyncFileUpload1.PostedFile.SaveAs(trim(FolderToSave & newfilename))
                Outputmessage = "File uploaded!"
            Catch ex As Exception
                Outputmessage = "File could not be uploaded."
            End Try
        Else
            Outputmessage = "Cannot accept files of this type."
        End If

        ' Update database entry to indicate new banner name
            cmd.Connection = MyConn
            cmd.Connection.Open()     
            cmd.CommandText = "Update sponsors set sponsorlogoeng = '" & newfilename & "' where sponsorid = " & Session("sponsor")
            cmd.ExecuteNonQuery()
            cmd.Connection.Close()

        ' Display the output message
        upload1Label.Text = Outputmessage
    End If

    ' RescaleImage(trim(FolderToSave & newfilename))

    englishlogo.ImageUrl = Foldertosave & newfilename
    Showenglishlogoimages.Visible = "true"

End Sub

Open in new window

0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now