首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将大文件上传到WSS v3

将大文件上传到WSS v3
EN

Stack Overflow用户
提问于 2009-09-28 18:39:24
回答 3查看 1.7K关注 0票数 1

我构建了一个WSSv3应用程序,它以小块的形式上传文件;当每个数据块到达时,出于性能原因**,我暂时将其保留在SQL2005图像数据类型字段中。

上传结束时会出现问题;我需要通过WSSv3对象模型将数据从我的SQL Server移动到Sharepoint文档库。

现在,我可以想到两种方法:

代码语言:javascript
运行
复制
SPFileCollection.Add(string, (byte[])reader[0]); // OutOfMemoryException

代码语言:javascript
运行
复制
SPFile file = folder.Files.Add("filename", new byte[]{ });
using(Stream stream = file.OpenBinaryStream())
{
    // ... init vars and stuff ...
    while ((bytes = reader.GetBytes(0, offset, buffer, 0, BUFFER_SIZE)) > 0)
    {
        stream.Write(buffer, 0, (int)bytes); // Timeout issues
    }
    file.SaveBinary(stream);
}

有没有其他方法可以成功完成这项任务?

**性能原因:如果你尝试在Sharepoint上直接写每个块,你会注意到随着文件的增长(>100Mb),性能会下降。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-30 13:31:46

我以以下代码结束:

代码语言:javascript
运行
复制
myFolder.Files.Add("filename", 
   new DataRecordStream(dataReader, 
      dataReader.GetOrdinal("Content"), length));

你可以找到DataRecordStream implementation here。它基本上是一个通过.GetBytesDbDataRecord读取数据流

这种方法类似于OpenBinaryStream()/SaveBinary(stream),但它不会在传输数据时将所有byte[]保留在内存中。在某些情况下,将使用64k块从Microsoft.SharePoint.SPFile.CloneStreamToSPFileStream访问DataRecordStream

感谢你们提供的宝贵信息!

票数 1
EN

Stack Overflow用户

发布于 2009-09-29 09:19:29

我要说的第一件事是,SharePoint真的、真的不是为此而设计的。它将所有文件存储在自己的数据库中,所以这些大文件就是要去的地方。这不是一个好主意,原因有很多:可伸缩性、成本、备份/恢复、性能等。所以我强烈推荐使用文件共享。

您可以通过更改httpRuntime element in web.config的executionTimeout属性来增加web请求的超时。

除此之外,我不确定还能有什么建议。我还没有听说过在SharePoint中存储这么大的文件。如果你一定要这样做,也可以尝试在Server Fault上提问。

票数 0
EN

Stack Overflow用户

发布于 2009-09-29 15:29:09

如前所述,在Sharepoint中存储大文件通常不是一个好主意。有关更多信息,请参阅本文:http://blogs.msdn.com/joelo/archive/2007/11/08/what-not-to-store-in-sharepoint.aspx

也就是说,可以为BLOB使用外部存储,这可能会也可能不会帮助您的性能问题- Microsoft发布了一个半完整的外部BLOB存储提供程序,它可以做到这一点,但不幸的是,它在服务器场级别工作,并影响所有上传。尼克。

幸运的是,由于您可以实现自己的外部BLOB提供程序,因此可以编写一些内容来更好地处理这些特定文件。有关详细信息,请参阅本文:http://207.46.16.252/en-us/magazine/2009.06.insidesharepoint.aspx

这是否值得开销取决于您遇到了多大的问题。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1488653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档