嘗試上載大文件(100-500MB)時,我遇到了熟悉的「OutOfMemoryException」,這是由於嘗試一次將整個文件讀入內存(問及在這裏回答stackoverflow)。我知道我應該使用流或將文件分成更小的部分。如果有幫助,手動更改代理代碼是一個選項。我使用特定的web服務(CMWebService)。向IBM Content Manager WebService發送和接收大型MTOMA附件
由於我無法更改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);
耶,這個問題的代碼幫助我解決了一個無關的問題:-) – 2015-12-10 21:05:52