ASP.NET WebForms: Uploading, Validating And Displaying of Image





5.00/5 (5 votes)
This tip demonstrates how to upload an image to a specified folder within the root of the web application and display the image right away in the Image control after uploading.
Introduction
Many years ago, I wrote a series of blog posts that demonstrates the following:
- Uploading and Storing Images to Database in ASP.NET
- Displaying Image to Image Control based on User Selection in ASP.NET
- FAQ: Displaying Image from Database to GridView Control
- Uploading and Storing Image Path to Database and Image to Folder - Part 1
- Uploading and Storing Image Path to Database and Image to Folder - Part 2 (Displaying of Images)
- Validate Image extensions upon Upload
In this post, I'm going to demonstrate how to upload an image to a specified folder within the root of the web application and display the image right away in the Image control after uploading.
To get started, let's go ahead and fire up Visual Studio and create a new Website/Web Application project. After that, create a folder under the root application for storing the uploaded images.
Using the Code
The folder structure should look something like this below:
- Application Name
- AppCode
- AppData
- ImageStorage - //we will save the images in this folder
- Default.aspx
- web.config
For the simplicity of this demo, I just set up the HTML form like below:
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server"
Text="Upload" onclick="Button1_Click"/>
<br />
<asp:Image ID="Image1" runat="server" />
And here's the code for uploading:
protected void Button1_Click(object sender, EventArgs e) {
StartUpLoad();
}
private void StartUpLoad() {
string imgName = string.Empty;
int imgSize = 0;
string imgPath = string.Empty;
//validates the posted file before saving
if (FileUpload1.PostedFile != null && FileUpload1.PostedFile.FileName != "") {
//get the file name of the posted image
imgName = FileUpload1.PostedFile.FileName;
//sets the image path
imgPath = "ImageStorage/" + imgName;
//get the size in bytes that
imgSize = FileUpload1.PostedFile.ContentLength;
// 10240 KB means 10MB, You can change the value based on your requirement
if (imgSize > 10240) {
Page.ClientScript.RegisterClientScriptBlock(typeof(Page),
"Alert", "alert('File is too big.')", true);
} else {
//then save it to the Folder
FileUpload1.SaveAs(Server.MapPath(imgPath));
Image1.ImageUrl = "~/" + imgPath;
Page.ClientScript.RegisterClientScriptBlock(typeof(Page),
"Alert", "alert('Image saved!')", true);
}
}
}
The code above is pretty much self-explanatory, but it think it should be worth explaining what the code does. The StartUpload()
method contains the logic for saving the uploaded image to the specified folder location, which is under Project Root/ImageStorage. It also handles couple of basic validations for checking the PostedFile
and ContentLength
. If the validation fails, then it will trigger an alert popup to let the end user know that something is wrong, otherwise it will save the file to the system and then set the uploaded path as the ImageUrl
of the Image
control.
That simple! Now you should be able to see the image in the page after uploading.