将文件存储在文件系统

时间:2016-11-08 12:18:31

标签: sharepoint-2013 filestream sharepointdocumentlibrary

我在这里遇到了一些麻烦。以下是上下文:

我们的一位客户要求我们开发一种替代解决方案,将文档库的文档存储在内容数据库中,因为他们的内容数据库增长得太快了。他们为我们提供了网络存储,以便文档可以存储在文件系统中。谷歌搜索后,我发现了一个名为远程Blob存储 RBS RBS的功能,但正如参考文献所述,这是一个每个内容数据库功能,这是上下文无法接受的。我提出的另一个选择是使用 SPItemEventReceiver ,以便在 ItemAdded 事件中我可以保存与 SPFile 关联的 SPItemEventProperties 属性的 ListItem 到文件系统,可能删除或截断SPFile对象

public static void DeleteAssociatedFile(SPWeb web, SPListItem item)
{
    try
    {
        if (item == null) { throw new ArgumentNullException("item"); }

        if (item.FileSystemObjectType == SPFileSystemObjectType.File)
        {
            web.AllowUnsafeUpdates = true;

            using (var fileStream = item.File.OpenBinaryStream())
            {
                if (fileStream.CanWrite)
                {
                    fileStream.SetLength(0);
                }
            }

            item.File.Update();
        }
    }
    catch (Exception ex)
    {
        // log error message
        Logger.Unexpected("ListItemHelper.DeleteAssociatedFile", ex.Message);

        throw;
    }
    finally
    {
        web.AllowUnsafeUpdates = false;
    }
}

强制它不将其内容存储到内容数据库中。但它没有成功。每当我以某种方式设法删除或截断与ListItem关联的SPFile时,ListItem本身要么从文档库中删除,要么文件不会受到更改的影响。所以我的问题是:这个问题有解决方案吗?还有其他想法可以帮助我完成这个任务吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

正如你提出其他想法一样

  1. 我想到的一件事是一个用于商业而非网络存储的驱动器
  2. 另一个是开发自定义文件上传,将文件直接上传到网络存储,上传后,在SharePoint列表中添加一个条目。