Title: asdf
1ASP.NETFile Upload, Exception Handling
- David Turton
- Conestoga College
- Institute of Technology and Advanced Learning
- http//www.conestogac.on.ca/dturton
- Doon 1D17, x 3610
2Objectives
- File Upload
- Upload files to a server
- Exception Handling
- Create exceptions
- Use Try-Catch-Finally construct
- To intercept exceptions (abends)
3File Upload
4File Upload
- Allows users to upload a file to server
- Browse button included
- To select local file to be uploaded
- You control destination on server
- User presents a file
- you code target path filename
- Individual user rights are not relevant
- It's ASPNET user doing the writing
5Text box for name of file at server (or default
to source file name)
Button to enact upload
Could provide a text box to input the target
directory or just default it by application, user
name, etc.
6Uploading Files to NTFSwith IIS user ASPNET
needs permissions
- Windows Explorer
- Tools ? Options
- "View" tab
- Clear Use Simple File Sharing (Recommended)"
- Security tab becomes available
- Gives access to NTFS permissions
- Give user ASPNET modify rights
- In folder properties, Security tab
7Allow ASPNET user to change files
properties
8CCode to enact upload
- Private void btnUpload_Click(ByVal sender As
-
- try
-
- if (txtServerName.Text null
txtServerName.Text.Trim() "") - lblError.Text "Error need file-name for
server" - else
-
- String uploadDir Server.MapPath("/images")
- upldSource.PostedFile.SaveAs(uploadDir _at_"\"
txtServerName.Text) -
-
- catch (Exception ex)
-
- lblMessage.Text "exception
thrown " ex.Message -
Get actual path to the site-relative path/images
9VBCode to enact upload
- Protected Sub btnUpload_Click(ByVal sender As
- Try
- If (txtServerName.Text Is Nothing OrElse
txtServerName.Text.Trim() "") - lblError.Text "Error need file-name for
server" - else
- Dim uploadDir As string Server.MapPath("/i
mages") - upldSource.PostedFile.SaveAs(uploadDir "\"
txtServerName.Text) - End If
- Catch ex As Exception
- lblMessage.Text "exception thrown
" ex.Message - End Try
Get actual path to the site-relative path/images
10Server.MapPath("/images")
- Returns actual physical path on server
- Starting from the drive letter
- Parameter is assumed to be a relative address
- Based on 1st character
- / means relative to the web site
- All else assumed relative to current web page
- "/" or "\" as a 1st character is invalid
- Will double "\" between path parameter
11Properties of Interestassume browse control is
called "upldSource"
- upldSource.PostedFile.FileName
- Returns source file-name and path
- UpldSource.FileName
- Returns source file-name extension, no path
- upldSource.PostedFile.ContentLength
- Length of file being uploaded check for zero
length - upldSource.PostedFile.ContentType
- Type of file being uploaded, as general/specific
pair image/jpg - File extension not always indicative of file type
(in Linux and UNIX) - System.IO.Path.GetFileName(upldSource.PostedFile.F
ileName) - Returns input file-name extension (no path)
- System.IO.Path.GetFileExtension(upldSource.PostedF
ile.FileName) - Returns input file-name extension only
- System.IO.Path.GetDirectoryName(upldSource
PostedFile.FileName) - Returns input file's source path
12Exception Handling
13Exception Handling (simple)
- For commands likely to get an exception (abend)
- Put within a Try construct
- Use Catch construct to interpret the error
- Usually, just display the error text ex.Message
- Exceptions outside a Try-Catch construct
- Will abend program kick user off your site
try commands to upload file, modify
database, etc. things to do if it works
catch (Exception ex) lblMessage.Text
"Here is the exceptionltbr /gt"
ex.Message finally things to do
regardless
14Try Catch - Finally
- Commands in Try are executed in sequence
- On an exception (error)
- Processing jumps to Catch code
- Remaining Try code is discarded
- Exception or not
- Commands in Finally block are executed
- Code following Try-Catch-Finally is executed
- Unless Try or Catch execute a Return
- (or Throw an exception back to calling program)
- Even if the code says to leave the procedure,
Finally is executed before it does so. - If you have a blank Catch block
- You're hiding the abend and processing will
continue - You'll lose marks on assignments
15MultiView Wizard Controls
16New with ASP.NET 3.5MultiView Wizard Controls
- Draft a single form
- Divide it into sections
- Present one section at a time
- Fields on all sections
- Available at all times
- MultiView
- You control
- .ActiveViewIndex
- Navigation buttons
- Content of each section
- Wizard
- Generates
- Previous/Next/Finish buttons
- Navigation menu
- You control
- Content of each section
17Assigning buttons to same handlerCreate one or
two button handlers, rename them (PanelNext,
PanelBack)Assign pertinent handler to all Next
and Back buttons
18MultiView ControlView-to-view navigation code
// on initial load, display the first
panel protected void Page_Load(object sender,
EventArgs e) if (!IsPostBack)
viewSurvey.ActiveViewIndex 0 // all next
buttons just increment the view index protected
void PanelNext(object sender, EventArgs
e) viewSurvey.ActiveViewIndex // all back
buttons decrement the view index protected void
PanelBack(object sender, EventArgs
e) viewSurvey.ActiveViewIndex--
19Wizard ControlMultiple-template formsYou
provide content ? it provides navigation
You provide content on each panel, the wizard
provides menu on left Next/Prior buttons
20Added by wizard
21ltaspWizardStepgt attributes(some)
- Title"xxx"
- Title of step shown in hyperlink navigation
- AllowReturn"False"
- If true (default), users can come back to this
step - If false, users can't, but can jump over it
- StepType"xxx"
- "Auto" default
- "Start" only Next button
- "Step" Next Previous
- "Finish" only Finish button
- "Complete" doesn't appear in hyperlink menu
22Wizard Events
- Xxx_NextButtonClick
- Look at e.NextStepIndex
- Next step to be displayed
- Can use input fields to decide whether to jump
this step or not
23Wizard Step event OnActivateuse to preload step
with data from other steps,decide whether to do
step, etc.