2014-12-01 73 views
1

嘗試上載大文件(100-500MB)時,我遇到了熟悉的「OutOfMemoryException」,這是由於嘗試一次將整個文件讀入內存(問及在這裏回答stackoverflow)。我知道我應該使用流或將文件分成更小的部分。如果有幫助,手動更改代理代碼是一個選項。我使用特定的web服務(CMWebService)。向IBM Content Manager WebService發送和接收大型MTOMA附件

由於我無法更改IBM代碼,有沒有辦法以較小的部分發送文件?我已經找到類UpdateItemRequestAddUpdateItemRequestAddPart但我不能讓他們的工作。不幸的是,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

耶,這個問題的代碼幫助我解決了一個無關的問題:-) – 2015-12-10 21:05:52

回答