6

マルチメディアコンポーネントのバイナリファイルをダウンロードする必要があるという要件がありますが、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;

提案してください。

4

1 に答える 1

5

Tridion.ContentManager.CoreService.Client.dllstreamDownloadClient.DownloadBinaryContent内に使用できるヘルパー関数があります。

私は通常その目的で再利用する次の関数を作成しました。

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();
} 
于 2012-10-10T10:06:24.863 に答える