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){}
}
}
});
}
|