Tridion核心服务如何下载多媒体组件的二进制文件

Tridion核心服务如何下载多媒体组件的二进制文件,tridion,tridion-2011,core-services,Tridion,Tridion 2011,Core Services,我有一个要求,需要下载多媒体组件的二进制文件,但当我访问BinaryContentData类的公开属性时,就没有下载图像文件的属性。虽然用于上传文件,但核心服务有一个属性,即UploadFromFile 那么有没有办法将二进制文件下载到临时位置呢。下面是我正在使用的代码: core_service.ServiceReference1.SessionAwareCoreService2010Client client = new SessionAwareCoreService2010Client()

我有一个要求,需要下载多媒体组件的二进制文件,但当我访问
BinaryContentData
类的公开属性时,就没有下载图像文件的属性。虽然用于上传文件,但核心服务有一个属性,即
UploadFromFile

那么有没有办法将二进制文件下载到临时位置呢。下面是我正在使用的代码:

core_service.ServiceReference1.SessionAwareCoreService2010Client client = new SessionAwareCoreService2010Client(); 
client.ClientCredentials.Windows.ClientCredential.UserName = "myUserName"; 
client.ClientCredentials.Windows.ClientCredential.Password = "myPassword"; client.Open();
ComponentData component = (ComponentData)client.TryCheckOut(
                            multimediaComponentURI, new ReadOptions());
BinaryContentData binaryData =   component.BinaryContent;

请建议。

Tridion.ContentManager.CoreService.Client.dll中有一个名为
streamDownloadClient.DownloadBinaryContent
的助手函数,您可以使用它

我创建了以下功能,我通常会重用这些功能:

私有静态void CreateBinaryFromMultimediaComponent(字符串tcm)
{
Tridion.ContentManager.CoreService.Client.StreamDownloadClient StreamDownloadClient=新的StreamDownloadClient();
SessionaWareCoReserveClient客户端=新SessionaWareCoReserveClient(“netTcp_2011”);
ComponentData multimediaComponent=client.Read(tcm,new ReadOptions())作为ComponentData;
//生成您自己的文件名和文件位置
string file=“D:\\MyTempLocation\\”+Path.GetFilename(multimediaComponent.BinaryContent.Filename);;
//从Tridion中写出现有文件
FileStream fs=File.Create(文件);
字节[]二进制内容=null;
如果(multimediaComponent.BinaryContent.FileSize!=-1)
{
Stream tempStream=streamDownloadClient.DownloadBinaryContent(tcm);
var memoryStream=新的memoryStream();
tempStream.CopyTo(memoryStream);
binaryContent=memoryStream.ToArray();
}
Write(binaryContent,0,binaryContent.Length);
fs.Close();
} 

要使用上述代码,您可能还需要增加“streamDownload\u basicHttp\u 2010”端点中以下属性的大小:-maxBufferSize=“1073741824”maxBufferPoolSize=“1073741824”maxReceivedMessageSize=“1073741824”。默认情况下,它们的值为“65536”。您可能需要使用此代码来获取正确的文件路径字符串file=“D:\\MyTempLocation\\”+Path.GetFileName(multimediaComponent.BinaryContent.Filename);