Blue Theme Orange Theme Green Theme Red Theme
 
Discover the top 5 tips for understanding .NET Interop
Home | Forums | Videos | Advertise | Certifications | Downloads | Blogs | Interviews | Jobs | Beginners | Training
 | Consulting  
Submit an Article Submit a Blog 
 Jump to
Skip Navigation Links
TechnologyExpand Technology
WebsiteExpand Website
DevExpress UI Controls
Search :       Advanced Search »
Home » SharePoint » Programmatically uploading multiple files to Custom sharepoint list in 2007

Programmatically uploading multiple files to Custom sharepoint list in 2007

This article describes step by step processes to create a webpart in share point server 2007, and using the same how to programmatically upload Multiple files to Custom Share Point List in Share Point Server 2007.

Page Views : 57655
Downloads : 0
Rating :
 Rate it
Level : Beginner
   Print Read/Post comments Post a comment  Similar Articles  
   Email to a friend  Bookmark  Author's other articles  
 
Nevron Chart
Become a Sponsor
Team Foundation Server Hosting
Become a Sponsor
 Tag Cloud
 Latest Jobs
More ... 
 Latest Interview Questions
More ... 

Introduction:

 

A custom SharePoint list can be configured to collect any type of data and SharePoint automatically generates the forms for adding new items, editing items and viewing items.

 

Team Web site comes with a built-in List Calendar, Task, which is listed on the Quick Launch bar. A new custom list has to be created for storing the files.


Steps creating custom list:

 

 

Custom list created

 

 

Custom Column Creation

 

  1. While creating custom list Named as FileList default column will create Title.
  2. Modify column name Title as Filename.
  3. Create one more column as Filedate.
  4. Create one more column as FileSize.

Implementation of Web part

The files are added to the custom GridView (list) in web part level using browse file upload button. You can add and delete multiple files in this list. Finally all the files are uploaded in custom share point list Filelist using submit button in webpart.

 

The steps to create a web part

  • Make sure installed VS.net 2005.
  • Make sure installed Web part Project Library in your system.
  • Start VS.Net 2005 and create a new project.
  • Select Project Type as Visual C#-->SharePoint.
  • Visual Studio Installed templates as Web Part.
  • Change Name as MultipleUploadWebpart.
  • Change Location as e:\ MultipleUploadWebpart.
  • Change Solution name as FileUploadWebPart.

 

Using the Render method

 

The Web part base class seals the Render method of System.Web.UI.Control because the Web Part infrastructure needs to control rendering the contents of a Web Part. For this reason, custom Web Parts must override the Render method of the Web part base class.


The Complete Web part Code

 

#region File Information

///<summary>

/// ------------------------------------------------------------------------------------------------------

/// Namespace : MultipleFileUploadWebPart

///

/// Purpose   : To Create Webpart to programmatically upload MultipleFiles to Custom SharePoint List

///        

/// Change History

/// -------------------------------------------------------------------------------------------------------

/// Date            Edit            Author            Comment             

/// -------------+--------+-------------------------------------------------------------------------------

/// 12-July-2007    [100]          Saravanan_Gajendran     Create Webpart

/// -------------+--------+-------------------------------------------------------------------------------

///</summary>

using System;

using System.Runtime.InteropServices;

using System.Web.UI;

using System.Web;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Serialization;

using System.Data;

using System.IO;

using System.Text;

using System.Web.SessionState;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebControls;

using Microsoft.SharePoint.WebPartPages;

 

namespace MultipleUploadWebpart

{

     [Guid("2115a405-ff46-4040-8370-6e4fcb7b9194")]

     public class MultipleUploadWebpart : System.Web.UI.WebControls.WebParts.WebPart

     {

          #region Variables

          private HtmlInputFile inputFile;

          private Button btnUpload;

          private Label lblMessage;

          private GridView dgdUpload;

          private string fileName = "";

          private Button btnSubmit;

          private HyperLinkField hlnkFileName;        

          private BoundField bndFileSize;

          private BoundField bndFileKb;

          private ButtonColumn btnclmDelete;

          private CommandField cmdDelete;

          private double length;

          byte[] contents;

          DataTable dt;//datatable use for multiple file upload

          DataRow dr;//datarow use for multiple file upload

          DataColumn dc;//datacolumn use for multiple file upload

          double count = 0;//count of file size

          #endregion

          #region Create Child Control

          protected override void CreateChildControls()

          {

               #region inputfile

               this.inputFile = new HtmlInputFile();

               this.inputFile.ID = "_fileUpload";

               #endregion           

               #region message label

               this.lblMessage = new Label();

               this.lblMessage.ID = "_lblMessage";

               this.lblMessage.Text = "";
               #endregion
  
               #region
  Button

               this.btnUpload = new Button();

               this.btnUpload.ID = "_btnUploadUpload";

               this.btnUpload.Text = "Upload";

               this.btnUpload.Click += new EventHandler(btnUploadUploadClick);

               this.btnSubmit = new Button();

               this.btnSubmit.ID = "_btnSubmit";

               this.btnSubmit.Text = "Submit";

               this.btnSubmit.Click += new EventHandler(btnSubmit_Click);

               #endregion

               #region GridView

               this.dgdUpload = new GridView();

               this.hlnkFileName = new HyperLinkField();

               this.hlnkFileName.DataTextField = "FileName";

               this.hlnkFileName.DataNavigateUrlFormatString = "FilePath";

               this.hlnkFileName.HeaderText = "FileName";

               this.bndFileSize = new BoundField();

               this.bndFileSize.HeaderText = "FileSize";

               this.bndFileSize.DataField = "FileSize";

               this.bndFileKb = new BoundField();

               this.bndFileKb.HeaderText = "";

               this.bndFileKb.DataField = "KB";

               this.cmdDelete = new CommandField();

               this.cmdDelete.HeaderText = "Delete";

               this.cmdDelete.ButtonType = ButtonType.Link;

               this.cmdDelete.InsertImageUrl = "delete.gif";

               this.cmdDelete.DeleteText = "Delete";

               this.cmdDelete.ShowDeleteButton = true;

               this.dgdUpload.ID = "_dgdFileUpload";

               this.dgdUpload.Columns.Add(hlnkFileName);

               this.dgdUpload.Columns.Add(bndFileSize);

               this.dgdUpload.Columns.Add(bndFileKb);

               this.dgdUpload.Columns.Add(cmdDelete);

               this.dgdUpload.AutoGenerateColumns = false;          

               this.dgdUpload.RowDeleting += new GridViewDeleteEventHandler
              
(dgdUpload_RowDeleting);

               #endregion

               #region Add Controls

               this.Controls.Add(dgdUpload);

               this.Controls.Add(inputFile);
               this.Controls.Add(lblMessage);

               this.Controls.Add(btnUpload);

               this.Controls.Add(btnSubmit);

               base.CreateChildControls();

               #endregion

          }

          #endregion

          #region RowDeleting

          private void dgdUpload_RowDeleting(object sender, GridViewDeleteEventArgs e)

          {

               int recordToDelete= e.RowIndex;

               dt = (DataTable)Page.Session["Files"];

               int cn = dt.Rows.Count;

               dt.Rows.RemoveAt(recordToDelete);

               dt.AcceptChanges();
               Page.Session["Files"] = dt;
               this.dgdUpload.DataSource = dt
               this.dgdUpload.DataBind();

           }

           #endregion

           #region OnLoad

           protected override void OnLoad(EventArgs e)

           {

                base.OnLoad(e);

           }

           #endregion

           #region File in SharePoint List

           private void btnSubmit_Click(object sender, EventArgs e)

           {

                SPWeb site = SPContext.Current.Web;

                SPList list = site.Lists["FileList"];

                SPListItem myNewItem ;          

                dt = (DataTable)Page.Session["Files"];

                int _dtcnt = dt.Rows.Count;

                string strDate="";

                foreach (DataRow dr in dt.Rows)

            {

                 strDate = System.DateTime.Now.Date.TimeOfDay.ToString();

                 myNewItem = list.Items.Add();

                 fileName = dr["Filename"].ToString();              

                 string strFilepath= dr["FilePath"].ToString()

                 StreamReader sr = new StreamReader(strFilepath);

                 Stream fStream=sr.BaseStream ;               

                 contents = new byte[fStream.Length];

                 fStream.Read(contents, 0, (int)fStream.Length);

                 fStream.Close();

                 myNewItem["Filename"] = dr["Filename"].ToString();

                 myNewItem["FileSize"] = dr["FileSize"].ToString();

                 myNewItem["Filedate"] = strDate;

                 myNewItem.Attachments.Add(fileName, contents);

                 myNewItem.Update();

                 System.IO.File.Delete(strFilepath);

             }

             lblMessage.Text = "Sucessfully Submited";

             }

             #endregion

             #region Upload File Add in List

             protected void btnUploadUploadClick(object sender, EventArgs e)

             {

                  fileName = System.IO.Path.GetFileName(inputFile.PostedFile.FileName);

                  if (fileName != "")

             {

                  string _fileTime = DateTime.Now.ToFileTime().ToString();

                  string _fileorgPath =  System.IO.Path.GetFullPath
                  (inputFile.PostedFile.FileName);

                  string _newfilePath = _fileTime + "~" + fileName;

                  length = (inputFile.PostedFile.InputStream.Length) / 1024;

                  string tempFolder = Environment.GetEnvironmentVariable("TEMP");

                  string _filepath = tempFolder + _newfilePath;               

                  inputFile.PostedFile.SaveAs(_filepath);

                  AddRow(fileName, _filepath, length);

                  lblMessage.Text = "Successfully Added in List";

             }

             else
 
           {

                  lblMessage.Text="Select a File";

                  return;

             }

        }

        #endregion

        #region Render

        protected override void Render(HtmlTextWriter writer)

        {

             // TODO: add custom rendering code here.

             EnsureChildControls();

             this.inputFile.RenderControl(writer);

             this.btnUpload.RenderControl(writer);

             this.lblMessage.RenderControl(writer);

             this.dgdUpload.RenderControl(writer);

             this.btnSubmit.RenderControl(writer);

        }

        #endregion

        #region AddMoreRows for file upload

        private void AddMoreColumns()

        {

             dt = new DataTable("Files");

             dc = new DataColumn("FileName", Type.GetType("System.String"));

             dt.Columns.Add(dc);

             dc = new DataColumn("FilePath", Type.GetType("System.String"));

             dt.Columns.Add(dc);

             dc = new DataColumn("FileSize", Type.GetType("System.String"));

             dt.Columns.Add(dc);

             dc = new DataColumn("KB", Type.GetType("System.String"));

             dt.Columns.Add(dc);

             Page.Session["Files"] = dt;

        }

        #endregion

        #region AddRow for file upload

        private void AddRow(string file, string path, double length)

        {

             dt = (DataTable)Page.Session["Files"];

             if (dt == null)

            {

                 AddMoreColumns();

            }

            dr = dt.NewRow();

            dr["FileName"] = file;

            dr["FilePath"] = path;          

            dr["FileSize"] = Convert.ToString(length);

            dr["KB"] = "KB";         

            dt.Rows.Add(dr);

            Page.Session["Files"] = dt;

            this.dgdUpload.DataSource = dt;

            this.dgdUpload.DataBind();//bind in grid

       }

       #endregion

   }
}


Deploy File Upload Web part in the share point server

  1. Right click solution file then select properties. 
  2. Select Debug Start browser with URL selects your respective SharePoint Site.


  3. Select Signing option.


  4. Ensure the strong name key and sign the assembly check box.
  5. Right Click properties select Deploy.


  6. It is automatically deployed the web part in respective site.
  7. Deploy will take care of .Stop IIS, Buliding solution, Restarting Solution, Creating GAC, Restarting IIS like that.


  8. Multiple Upload Webpart is new one.
  9. New MultipleUploadWebpart Web Part.

Events

1. Browse Button

It is used to browse and select the particular file.

2. Upload Button

It is used to upload file to the windows temp folder then list the files.

3. Submit Button

It is used to store all files in share point custom list.



All the files are listed

Delete

using this option you need to delete the file in this list.Whenever you give the submit only it will go to SharePoint list.



All the files are uploading in respective share point custom list.

Comment Request!
Thank you for reading this post. Please post your feedback, question, or comments about this post Here.
Login to add your contents and source code to this article
 [Top] Rate this article
 
 About the author
 
Saravanan Gajendran

Saravanan Gajendran: Is an Electronics engineer, who graduated in the  year of 2004-from  Chennai university, India, He is currently working on Microsoft .NET technology. His main experience is  based on ASP.NET,C#.NET,VB.NET,SQL server 2000,Javascript,HTML,DHTML,VSS,VSTS,WSS 3.0, MOSS 2007 with Ajax and Telerik Radcontrols. Likes to read about new technologies and books on self learning and personality development. He is very self driven and gives every job he takes up his best.Microsoft certified professional in MCP 070-315: Developing and Implementing Web Applications with Microsoft® Visual C#™ .NET and Microsoft® Visual Studio® .NET and Brain bench Certification - .NET Framework: Enterprise Application Developer Emil: saravanandotnet@hotmail.com

Looking for C# Consulting?
C# Consulting is founded in 2002 by the founders of C# Corner. Unlike a traditional consulting company, our consultants are well-known experts in .NET and many of them are MVPs, authors, and trainers. We specialize in Microsoft .NET development and utilize Agile Development and Extreme Programming practices to provide fast pace quick turnaround results. Our software development model is a mix of Agile Development, traditional SDLC, and Waterfall models.
Click here to learn more about C# Consulting.
 
Introducing MaxV - one click. infinite control. Hyper-V Hosting from MaximumASP.
Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Dynamic PDF
ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
Discover the top 5 tips for understanding .NET
Ricky Leeks presents the top 5 tips for understanding .NET Interoperability. Learn more.
Nevron Chart for .NET 2010.1 Now Available
The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
ASP.NET 4 Hosting
Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites – Click Here!
 
 Post a Feedback, Comment, or Question about this article
Subject:
Comment:
Team Foundation Server Hosting
Become a Sponsor
 Comments
Thanks for the article by Hemant On January 9, 2008
Thanks for the article
Reply | Email | Modify 
How can i uplaod file after list or library has been customized. by Kuldeep On March 10, 2008
Hi, I had faced a problem a lot of time, when i am going to uplaod a file in customized by SPD. It will give me error(may be you had already seen). So is there any solution for that one.
Reply | Email | Modify 
Re: How can i uplaod file after list or library has been customized. by Saravanan On March 24, 2008
Reply | Email | Modify 
Geting Error by Jagruti On November 17, 2008
On Submit button geting this error An unexpected error has occurred. Web Parts Maintenance Page: If you have permission, you can use this page to temporarily close Web Parts or remove personal settings. For more information, contact your site administrator.
Reply | Email | Modify 
Question by Jagruti On November 17, 2008
How you add this web part with FileList. I added File in my page int that only I have added this web part . So It will link with this web part. why I am geting error on Submit Button. and one more question How I can trace the error ?
Reply | Email | Modify 
Re: Question by Saravanan On December 8, 2008
Question Jagruti 11/17/2008
How you add this web part with FileList. I added File in my page int that only I have added this web part . So It will link with this web part. why I am geting error on Submit Button. and one more question How I can trace the error ?

Answer:

You will be able to add webpart in the site level itself .The site contains as custom list "FileList " .This webpart would be refering to the list (That code is presented in this article)

What error did  you get while clicking on submit button?

If want to trace the error ,you will need to debug the webpart code(Your site needs to attach with webpart code )

 

Reply | Email | Modify 
Excellent by santhosh On December 24, 2008
Excellent Excellent ......Thanks For giving this...
Reply | Email | Modify 
Its a very good article by BalaGopal On May 8, 2009
It is very useful article for me. Thanks for providing this ariticle.

Please keep posting.
Reply | Email | Modify 
Hi by anup On May 25, 2009
This is very useful artical.
can you give me download link
Reply | Email | Modify 
sharepoint file type by nagu On September 25, 2009
Hi  i am nagu working as sharepoint developer in hitachi,can you tell how to make upload file to accept the special charecter in file names
Reply | Email | Modify 
Nice one by sdnaag On December 14, 2009
its Nice one but i done with vs2008 that is sharepoint extension for vs2008.but here whenever u upload file the files are binding in gridview but not showing in the list.
and second 1 is files are not binding in gridview when page loads...let me know if any updates
Reply | Email | Modify 
Nice one by sdnaag On December 14, 2009
its Nice one but i done with vs2008 that is sharepoint extension for vs2008.but here whenever u upload file the files are binding in gridview but not showing in the list.
and second 1 is files are not binding in gridview when page loads...let me know if any updates
Reply | Email | Modify 
Programmatically creating document library from list by Akila On October 7, 2010
Can u help me on this..
Reply | Email | Modify 
Tks!!! by Junior On January 26, 2012
Thanks very much for your article, i used in solution for upload various attachments on list SharePoint 2007,I had to change some things for finish my project!! Thanks a lot!
Reply | Email | Modify 

 © 2012  contents copyright of their authors. Rest everything copyright Mindcracker. All rights reserved.