尝试上传大文件(100-500MB)时,我会熟悉" OutOfMemoryException "这是由于尝试一次将整个文件读入内存引起的(在stackoverflow上询问并回答)。我知道我应该使用流或将文件分成更小的部分。如果有帮助,手动更改代理代码是一种选择。我使用特定的webservice(CMWebService)。
由于我无法更改IBM代码,有没有办法以较小的部分发送文件?我已经找到了类 UpdateItemRequestAdd 和 UpdateItemRequestAddPart 但我无法让它们运行。不幸的是,IBM也没有提供样品。
接收文件会带来同样的问题,而且我找不到任何可以帮助我的课程。
这是我目前用于上传文件的代码:
string resources0 = "tiffFileContent";
string resources1 = "image/tiff";
string resources2 = @"D:\myImageFile.tif";
CreateItemRequest createRequest = new CreateItemRequest()
{
AuthenticationData = data,
Item = new CreateItemRequestItem()
{
ItemXML = new ItemXML()
{
MYITEMTYPE = new MYITEMTYPE()
{
ArchiveId = "4719",
ICMBASE = new ICMBASE[] {
new ICMBASE(){
resourceObject = new LobObjectType()
{
label = new LobObjectTypeLabel()
{
name= resources0
},
MIMEType = resources1,
originalFileName = resources2
},
}
}
}
},
},
mtomRef = new MTOMAttachment[] { new MTOMAttachment() {
ID = resources0,
MimeType = resources1,
Value = System.IO.File.ReadAllBytes(resources2), // Error on large files
}},
};
var createReply = service.CreateItem(createRequest);
答案 0 :(得分:0)
我们已经解决了#34;通过告诉我们的客户获得更强大的RAM系统。凭借4-8GB的RAM,我们能够毫无问题地上传高达200MB的文件。
收到大文件后,必须增加IBM Content Manager中的Java-HeapSize。 http://www.mkyong.com/websphere/how-to-increase-websphere-jvm-memory/