我构建了一个WSSv3应用程序,它以小块的形式上传文件;当每个数据块到达时,出于性能原因**,我暂时将其保留在SQL2005图像数据类型字段中。
上传结束时会出现问题;我需要通过WSSv3对象模型将数据从我的SQL Server移动到Sharepoint文档库。
现在,我可以想到两种方法:
SPFileCollection.Add(string, (byte[])reader[0]); // OutOfMemoryException和
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),性能会下降。
发布于 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
这是否值得开销取决于您遇到了多大的问题。:)
https://stackoverflow.com/questions/1488653
复制相似问题