繁体   English   中英

在虚拟内存中创建文件

[英]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一句,请注意您的代码会泄漏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);
        }
    }
}

像这样:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM