public void UpdateDocument()
{
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite siteColl = new SPSite("http://localhost:8080/"))
{
using (SPWeb web = siteColl.OpenWeb())
{
try
{
SPFile spfile = web.GetFile("http://localhost:8080/Lists/DemoLib/abc.txt");
if (spfile.Exists)
{
byte[] byteArrayFileContentsBefore = spfile.OpenBinary();
if (byteArrayFileContentsBefore.Length > 0)
{
string strFileContentsBefore = enc.GetString(byteArrayFileContentsBefore); //convert byte array to string.
string newStr = strFileContentsBefore.Replace("http://dev:999","http://google.com");
byte[] byteArrayFileContentsAfter = null;
if (!newStr.Equals(""))
{
byteArrayFileContentsAfter = enc.GetBytes(newStr);
spfile.SaveBinary(byteArrayFileContentsAfter); //save to the file.
}
}
}
}
catch (Exception e) { }
}
}
});
}
SPFile has a CopyFile method which can copy the file to a new location. But if there was an existing file on the new location, you can set the overwrite parameter to true to overwrite it. Here is a problem, supposingly there was a workflow already on the file in the new location... when you use CopyFile.. the workflow is lost.. basically it is not an update of the file.. it is infact a delete and re-adding of the file. The following code will overcome this problem
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
private void UpdateDocumentForERB_ExecuteCode(SPWeb web, string originalFileUrl, string targetFileUrl)
{ SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPFile OriFile = web.GetFile(originalFileUrl);
SPFile TarFile = web.GetFile(targetFileUrl);
byte[] byteArrayOriFile = OriFile.OpenBinary();
TarFile.SaveBinary(byteArrayOriFile);
});
} |
public void UpdateDocument()
{ System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
SPSecurity.RunWithElevatedPrivileges(delegate()
{
{
using (SPWeb web = siteColl.OpenWeb())
{
try
{
if (spfile.Exists)
{
byte[] byteArrayFileContentsBefore = spfile.OpenBinary();
if (byteArrayFileContentsBefore.Length > 0)
{
string strFileContentsBefore = enc.GetString(byteArrayFileContentsBefore); //convert byte array to string.
string newStr = strFileContentsBefore + "This is the new text added";
byte[] byteArrayFileContentsAfter = null;
if (!newStr.Equals(""))
{
byteArrayFileContentsAfter = enc.GetBytes(newStr);
spfile.SaveBinary(byteArrayFileContentsAfter); //save to the file.
}
}
}
}
catch (Exception e){}
}
}
});
} |