Upload can be made with the FileUpload Control...
Give the postedFile a unique name (mabe you can prefix the uploadtime) and save it on disk, then insert FilePath into new row
Instead of GridView you could take a repeater in which you can define its appearance by yourself...
<asp:Repeater runat="server" ID="repImageGallery">
<ItemTemplate>
<asp:Image runat="server" ID="img" ImageUrl='<%#Eval("ImageUrl") %>' />
</ItemTemplate>
</asp:Repeater>
CodeBehind:
repImageGallery.DataSource = DB.GetImageNames();
repImageGallery.DataBind();
Markus