SDL*_*per 6 core-services tridion tridion-2011
我有一个要求,我需要下载多媒体组件的二进制文件,但当我访问BinaryContentData类暴露的属性时,没有属性下载图像文件.虽然对于上传文件,Core Service也有一个属性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;
Run Code Online (Sandbox Code Playgroud)
请建议.
有一个叫辅助函数streamDownloadClient.DownloadBinaryContent里面Tridion.ContentManager.CoreService.Client.dll,您可以使用.
我创建了以下通常用于此目的的函数:
private static void CreateBinaryFromMultimediaComponent(string tcm)
{
Tridion.ContentManager.CoreService.Client.StreamDownloadClient streamDownloadClient = new StreamDownloadClient();
SessionAwareCoreServiceClient client = new SessionAwareCoreServiceClient("netTcp_2011");
ComponentData multimediaComponent = client.Read(tcm, new ReadOptions()) as ComponentData;
// Generate you own file name, and file location
string file = "D:\\MyTempLocation\\" + Path.GetFilename(multimediaComponent.BinaryContent.Filename);;
// Write out the existing file from Tridion
FileStream fs = File.Create(file);
byte[] binaryContent = null;
if (multimediaComponent.BinaryContent.FileSize != -1)
{
Stream tempStream = streamDownloadClient.DownloadBinaryContent(tcm);
var memoryStream = new MemoryStream();
tempStream.CopyTo(memoryStream);
binaryContent = memoryStream.ToArray();
}
fs.Write(binaryContent, 0, binaryContent.Length);
fs.Close();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1196 次 |
| 最近记录: |