In this article I will explain with an example, how to upload images and save it in a Folder (Directory) on Disk using ASP.Net FileUpload control using C# and VB.Net.
This article will also illustrate how to fetch the Image files from Folder (Directory) and display the same in ASP.Net GridView using C# and VB.Net.
HTML Markup
The HTML Markup consists of an ASP.Net FileUpload control, a Button and an ASP.Net GridView control.
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="Upload" />
<hr />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" ShowHeader="false">
        <asp:BoundField DataField="Text" />
        <asp:ImageField DataImageUrlField="Value" ControlStyle-Height="100" ControlStyle-Width="100" />
You will need to import the following namespaces.

using System.IO;
using System.Collections.Generic;
Imports System.IO
Imports System.Collections.Generic
Uploading Images using ASP.Net FileUpload Control
When the Upload Button is clicked, the uploaded Image file is saved in the Folder (Directory) on Disk.
Note: If you need to learn about validation of files so that user can upload only Image files then please refer my article, ASP.Net FileUpload: File Extension Validation.
Finally, the Page is redirected to itself which will load the Image inside the GridView control.

protected void Upload(object sender, EventArgs e)
    if (FileUpload1.HasFile)
        string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
        FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Images/") + fileName);
Protected Sub Upload(sender As Object, e As EventArgs)
    If FileUpload1.HasFile Then
        Dim fileName As String = Path.GetFileName(FileUpload1.PostedFile.FileName)
        FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Images/") + fileName)
    End If
End Sub
Displaying images from Folder (Directory) on Disk in ASP.Net GridView
In the Page Load event, the Image files are fetched from the Images folder and using a For Loop, the URL of the Image files are added to the List Collection which is later used to populate (bind) the GridView.

protected void Page_Load(object sender, EventArgs e)
    if (!IsPostBack)
        string[] filePaths = Directory.GetFiles(Server.MapPath("~/Images/"));
        List<ListItem> files = new List<ListItem>();
        foreach (string filePath in filePaths)
            string fileName = Path.GetFileName(filePath);
            files.Add(new ListItem(fileName, "~/Images/" + fileName));
        GridView1.DataSource = files;
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        Dim filePaths As String() = Directory.GetFiles(Server.MapPath("~/Images/"))
        Dim files As New List(Of ListItem)()
        For Each filePath As String In filePaths
            Dim fileName As String = Path.GetFileName(filePath)
            files.Add(New ListItem(fileName, "~/Images/" + fileName))
        GridView1.DataSource = files
    End If
End Sub
Upload images to folder and display uploaded images in ASP.Net GridView using C# and VB.Net