[英]create a file in Virtual Memory
嗨,我正在尝试将本地上传到Sharepoint documentLibrary。
以下代码可以很好地将文件上传到文档Libray中。
public void UploadFile(string srcUrl, string destUrl)
{
if (!File.Exists(srcUrl))
{
throw new ArgumentException(String.Format("{0} does not exist",
srcUrl), "srcUrl");
}
SPWeb site = new SPSite(destUrl).OpenWeb();
FileStream fStream = File.OpenRead(srcUrl);
byte[] contents = new byte[fStream.Length];
fStream.Read(contents, 0, (int)fStream.Length);
fStream.Close();
site.Files.Add(destUrl, contents);
}
但是我需要在文档库中创建一个文本文件,其中包含诸如“这是一个新文件”之类的内容,而无需将其保存在本地磁盘中。
您可以使用MemoryStream代替FileStream
。
您可以将字符串编码为字节数组,然后从该数组创建文件。
SPWeb
一句,请注意您的代码会泄漏SPSite
和SPWeb
,这是非常危险的,因为这些对象会占用大量内存。 您需要正确处理它们,例如使用嵌套的using语句:
using System.Text;
public void AddNewFile(string destUrl)
{
using (SPSite site = new SPSite(destUrl)) {
using (SPWeb web = site.OpenWeb()) {
byte[] bytes = Encoding.GetEncoding("UTF-8").GetBytes(
"This is a new file.");
web.Files.Add(destUrl, bytes);
}
}
}
像这样:
public void UploadText(string text, Encoding encoding, string destUrl)
{
SPWeb site = new SPSite(destUrl).OpenWeb();
site.Files.Add(destUrl, encoding.GetBytes(text));
}
PS:您将需要一种编码,以从字符串转换为字节数组。 您可以像我一样对一个进行硬编码或将其作为参数传递。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.