向IBM Content Manager Web Service发送和接收大型MTOM附件

时间:2014-12-01 15:42:55

标签: c# .net web-services mtom

尝试上传大文件(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);

1 个答案:

答案 0 :(得分:0)

我们已经解决了#34;通过告诉我们的客户获得更强大的RAM系统。凭借4-8GB的RAM,我们能够毫无问题地上传高达200MB的文件。

收到大文件后,必须增加IBM Content Manager中的Java-HeapSize。 http://www.mkyong.com/websphere/how-to-increase-websphere-jvm-memory/