在虚拟内存中创建一个文件

时间:2010-12-08 08:12:40

标签: c# sharepoint filestream

您好我正在尝试将本地上传到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);
    }

但我需要在文档库中创建一个文本文件,其中包含“这是一个新文件”之类的内容,而不将其保存在本地磁盘中。

3 个答案:

答案 0 :(得分:4)

您可以使用MemoryStream代替FileStream

答案 1 :(得分:1)

您可以将字符串编码为字节数组,并从该数组创建文件。

顺便说一句,请注意您的代码泄漏了SPSiteSPWeb,这非常危险,因为这些对象会占用大量内存。你需要妥善处理它们,例如使用嵌套的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);
        }
    }
}

答案 2 :(得分:0)

类似的东西:

public void UploadText(string text, Encoding encoding, string destUrl)
{
    SPWeb site = new SPSite(destUrl).OpenWeb();
    site.Files.Add(destUrl, encoding.GetBytes(text));
}

PS:你需要一个编码来从一个字符串转换为一个字节数组。您可以像我一样对其进行硬编码或将其作为参数传递。