2012-04-13 6 views

答えて

3

を許可することはできませんこれを実現するには、マルチメディアコンポーネントではなく、テキストを使用してhtaccessファイルを管理する場合は、次の手法を使用してバイナリをパッケージにプッシュできます。

1)Htaccessファイルのテキストを(Binary_Text) 2)次のようなコードを使用して、変数内のテキストからテキストファイルを作成し、パッケージに追加します。

class publishStringItemAsBinary : ITemplate 
{ 
    public void Transform(Engine engine, Package package) 
    { 
     TemplatingLogger log = TemplatingLogger.GetLogger(typeof(publishStringItemAsBinary)); 
     TemplateUtilities utils = new TemplateUtilities(); 
     System.IO.Stream inputStream = null; 
     try 
     { 
      string strInputName = package.GetValue("InputItem"); 
      string strFileName = package.GetValue("strFileName"); 
      string sg_Destination = package.GetValue("sg_Destination"); 
      string itemComponent = package.GetValue("mm_Component"); 

      inputStream = new MemoryStream(Encoding.UTF8.GetBytes(package.GetValue(strInputName))); 

      log.Debug("InputObject:" + strInputName); 
      log.Debug("Filename for binary:" + strFileName); 
      log.Debug("Destination StructureGroup:" + sg_Destination); 
      Publication contextPub = utils.getPublicationFromContext(package, engine); 
      TcmUri uriLocalSG = TemplateUtilities.getLocalUri(new TcmUri(contextPub.Id), new TcmUri(sg_Destination)); 
      TcmUri uriLocalMMComp = TemplateUtilities.getLocalUri(new TcmUri(contextPub.Id), new TcmUri(itemComponent)); 
      StructureGroup sg = (StructureGroup)engine.GetObject(uriLocalSG); 
      Component comp = (Component)engine.GetObject(uriLocalMMComp); 
      String sBinaryPath = engine.PublishingContext.RenderedItem.AddBinary(inputStream, strFileName, sg, "nav", comp, "text/xml").Url; 
      //Put a copy of the path in the package in case you need it 
      package.PushItem("BinaryPath", package.CreateStringItem(ContentType.Html, sBinaryPath)); 
     } 
     catch (Exception e) 
     { 
      log.Error(e.Message); 
     } 
     finally 
     { 
      if (inputStream != null) 
      { 
       inputStream.Close(); 
      } 

     } 
    } 
} 

コードはかなり自明です。これにより、text/xml型のバイナリがパブリッシュされますが、プレーンテキストファイルを変換する際に問題はありません。

+0

Chris、私はこれを今のところ展開作業にすることに決めましたが、このコードは別の時間には本当にうまく見えます。ありがとうございました。 –

3

あなたはあなたの.htaccessを保存するためにマルチメディアコンポーネントを使うことができると思います。名前なしでファイルをアップロードできない場合(Windowsの制限)、マルチメディアコンポーネントのBinaryContent.Filenameプロパティを変更すると、後でファイル名を変更することができます。このコンポーネントを別々に公開するか、AddBinaryメソッドをテンプレートの1つに使用します。

ありますが、他のいくつかのルールを変更することができ、ユーザのスキーマもあります:「\ Tridionの\ビン\のcm_xml_usr.xsd」は、しかし、あなたは、私はまた、バイナリを使用することを選ぶだろう、空のファイル名に

+0

あなたの答えをありがとう。今のところ私は1つのWebサイトしか持っていないので、これを展開タスクにしていますが、将来このようなものを実装するように見えます。 –