Uploading photos with asp.net
Language is VB
In the .aspx page add the following which allows users to browse to their photo
At the top of your .aspx.vb file you will need the following
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2D
Now a subroutine for uploading the photo
Private Sub UploadPhoto()
Dim FileName As String
Dim Msg As String
Dim disc_FileName As String
With fileInput
If .PostedFile.FileName = "" Then
lblFileName.Text = "Please browse to a photo."
Exit Sub
End If
If .PostedFile.ContentLength < 100 Then
lblFileName.Text = "UPLOAD FAILURE 1. - photo too small!"
Exit Sub
End If
If .PostedFile.ContentLength > 204800 Then
lblFileName.Text = "UPLOAD FAILURE 2. - size must not exceed 200k"
Exit Sub
End If
If Right(LCase(.PostedFile.FileName), 3) <> "jpg" Then ' ///////////note you can change this to "gif"
lblFileName.Text = "UPLOAD FAILURE 3. - you may only upload .jpg photo images, max size 200k"
Exit Sub
End If
FileName = "Photo" & ".jpg" '////// or gif
FileName = viewstate("MemberID") & "_" & FileName '///////////// the members ID is stored in Viewstate rather than a session variable.
disc_FileName = Server.MapPath(".\photos\temp\") & LCase(FileName) ' ///////////the directories must of course exist on the server!
.PostedFile.SaveAs(disc_FileName)
End With
'////Now scale the photo
Dim jPeg As Bitmap = New Bitmap(disc_FileName)
Dim L As Integer = CInt(ConfigurationSettings.AppSettings("TNWidth"))
Dim M As Integer = CInt(ConfigurationSettings.AppSettings("MainWidth"))
'///////////////////////////////////////
'The above come from web.config in the section
’
’
'The values are in pixels, so I want my main photo to be 400px wide and scaled in height accordingly. The thumb nail is to be 100px wide
'///////////////////////////////////
Dim sScale As Double = 0
Dim sScale2 As Double = 0
Dim M2 As Integer = M / 2
Dim L2 As Integer = L / 2
With jPeg
If (.Height < .Width) Then
sScale = L / .Width
sScale2 = M / .Width
Else
sScale = L2 / .Height
sScale2 = M2 / .Height
End If
End With
Dim NewWidth As Integer = CInt(sScale * jPeg.Width)
Dim NewHeight As Integer = CInt(sScale * jPeg.Height)
Dim NewWidth2 As Integer = CInt(sScale2 * jPeg.Width)
Dim NewHeight2 As Integer = CInt(sScale2 * jPeg.Height)
Dim OBM As Bitmap = New Bitmap(jPeg, NewWidth, NewHeight)
Dim OBM2 As Bitmap = New Bitmap(jPeg, NewWidth2, NewHeight2)
OBM.Save(Server.MapPath(".\photos\TN\") & LCase(FileName), ImageFormat.Jpeg)
OBM2.Save(Server.MapPath(".\photos\") & LCase(FileName), ImageFormat.Jpeg)
OBM.Dispose()
OBM2.Dispose()
jPeg.Dispose()
Dim db_FileName As String
Dim db_Thumb As String
Dim bR As Boolean
db_FileName = "http://www.mydomain.com/photos/" & FileName
db_Thumb = "http:///www.mydomain.com/photos/TN/" & FileName
bR = UploadPhotosToDB(CInt(viewstate("MemberID")), db_FileName, db_Thumb) ' a function which adds the members id and names of the uploaded photos to a database
If bR Then
lblFileName.Text = "Upload OK"
Else
lblFileName.Text = "SORRY, UPLOAD FAILURE - PLEASE TRY AGAIN"
End If
Try
'delete tmp photo
Dim objFSO
objFSO = Server.CreateObject("Scripting.FileSystemObject")
disc_FileName = Server.MapPath(".\photos\temp\") & LCase(FileName)
objFSO.DeleteFile(disc_FileName, False)
objFSO = Nothing
Catch ex As Exception
End Try
End Sub
…later…
Antic provided this very good link for more about imaging