Wednesday, May 26, 2010

How to attach,delete,upload files to SharePoint List Item using Object Model

Snippet code of deleting attachment from SharePoint list item : private void DeleteAttachment(int NodeID, String strFileName)
{
SPContext.Current.Web.AllowUnsafeUpdates = true;
SPListItem delItem = lstAudit.GetItemById(NodeID);
SPAttachmentCollection atCol = delItem.Attachments;
foreach (string strDelfileName in atCol)
{
if (strDelfileName == strFileName)
{
atCol.Delete(strDelfileName);
delItem.Update();
lstAudit.Update();
return;
}}}

Snippet code for downloading attachment from SharePoint List Item :

private void DownloadAttachment(string FileName)

{

try

{

string AttachmentURL = string.Empty;

AttachmentURL = FileName;

string strName = AttachmentURL.Substring(AttachmentURL.LastIndexOf(“/”) + 1);

string sbURL = AttachmentURL.Trim();

System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;

Response.AppendHeader(“Content-disposition”, “attachment; filename=” + strName);

Response.AppendHeader(“Pragma”, “cache”);

Response.AppendHeader(“Cache-control”, “private”);

Response.WriteFile(sbURL);

Response.End();

}

catch (Exception eDwn)

{

Response.Write(eDwn.Message);

}

}



Snippet code of uploading document to SharePoint List Item :



protected void btnUpload_Click(object sender, EventArgs e)

{

try

{

string fileName = “”;

string strExtensionName = “”;



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



if (fileName != “”)

{

strExtensionName = fileName.Substring(fileName.IndexOf(“.”) + 1);

if (strExtensionName.Equals(“webpart”)

strExtensionName.Equals(“dll”)

strExtensionName.Equals(“bat”)

strExtensionName.Equals(“exe”))

{

lblMessage.Visible = true;

lblMessage.Text = “Invalid fileName!!”;

}

else

{

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



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



if (txtFileName.Text.Trim().Length > 0)

{

fileName = fileName.Replace(fileName.Substring(fileName.LastIndexOf(“\\”) + 1), txtFileName.Text) + “.” + strExtensionName;

}

string _newfilePath = _fileTime + “~” + fileName;



string tempFolder = Environment.GetEnvironmentVariable(“TEMP”);





string _filepath = tempFolder + _newfilePath;



FileUpload.PostedFile.SaveAs(_filepath);



AddRow(fileName, _filepath, 0, true);

}

}

else

{



lblMessage.Visible = true;

lblMessage.Text = “Please Selct file Name”;



}



}

catch (Exception Ex)

{

Response.Write(Ex.Message);

}



}





protected void dgdUpload_RowDeleting(object sender, GridViewDeleteEventArgs e)

{

int recordToDelete = e.RowIndex;



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

dt = (DataTable)ViewState["Files"];



int cn = dt.Rows.Count;



if (Convert.ToInt32(dt.Rows[recordToDelete].ItemArray[0]) != 0)

{

DeleteAttachment(Convert.ToInt32(dt.Rows[recordToDelete].ItemArray[0]), dt.Rows[recordToDelete].ItemArray[1].ToString());

}



dt.Rows.RemoveAt(recordToDelete);



dt.AcceptChanges();

//Page.Session["Files"] = dt;

ViewState["Files"] = dt;

dgdUpload.DataSource = dt;

dgdUpload.DataBind();

}

private void AddMoreColumns()

{



dt = new DataTable(“Files”);



dc = new DataColumn(“ID”, Type.GetType(“System.Int16″));

dt.Columns.Add(dc);



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

dt.Columns.Add(dc);



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

dt.Columns.Add(dc);



//Page.Session["Files"] = dt;

ViewState["Files"] = dt;



}

private void AddRow(string file, string path, int ID, Boolean bolCheckForfiles)

{



Boolean bolAddRow = true;

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

dt = (DataTable)ViewState["Files"];



if (dt == null)

{

AddMoreColumns();



}

if (bolCheckForfiles)

{



if (dt.Rows.Count > 0)

{

foreach (DataRow drExistingrow in dt.Rows)

{



if (drExistingrow["FileName"].ToString() == file)

{

bolAddRow = false;

}

}

}

}

if (bolAddRow)

{



dr = dt.NewRow();







dr["ID"] = ID;

dr["FileName"] = file;

dr["FilePath"] = path;







dt.Rows.Add(dr);



//Page.Session["Files"] = dt;

ViewState["Files"] = dt;



dgdUpload.DataSource = dt;



dgdUpload.DataBind();//bind in grid



}

else

{

lblMessage.Visible = true;

lblMessage.Text = “Same File Name already exists!!!”;

}

}









protected void dgdUpload_RowCommand(object sender, GridViewCommandEventArgs e)

{

if (e.CommandName == “View”)

{

string file = e.CommandArgument.ToString();

DownloadAttachment(file);



}

}







if (dt != null)

{



int _dtcnt = dt.Rows.Count;

foreach (DataRow dr in dt.Rows)

{



Boolean bolAddAttachment = true;

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

if (itmCorrectiveActionFinding.Attachments.Count > 0)

{

foreach (string strAttachedname in itmCorrectiveActionFinding.Attachments)

{



if (fileName == strAttachedname)

{

bolAddAttachment = false;



}

}

}

if (bolAddAttachment)

{

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();



itmCorrectiveActionFinding.Attachments.Add(fileName, contents);



itmCorrectiveActionFinding.Update();

lstCorrectiveActionFinding.Update();

SPContext.Current.Web.Update();

System.IO.File.Delete(strFilepath);



}

}

}

No comments:

Post a Comment