2012-09-05 16 views
5

Cuando publicamos alguna página/componente dinámico de tridion, es posible agregar algún archivo/contenido multimedia externo (por ejemplo, imagen jpg) en el paquete de ejecución/representación actual al publicar Entonces, ¿ese paquete de transporte final tiene este archivo binario presente junto con el contenido original publicado? ¿Esto es posible usando la personalización de tridion renderer/resolver? En caso afirmativo, proporcione algunas entradas.empuje el archivo multimedia externo al paquete en el tiempo de publicación tridion

* Nota: * El contenido binario que necesita ser empujado hacia adentro para empaquetar al publicar el tiempo no está presente como componente multimedia en Tridion, que se encuentra en otra ubicación de archivos fuera Tridion CMS.Instead que tienen algún trozo multimedia componente que se utiliza dentro del componente/página publicado que tiene alguna imagen ficticia. tenemos la intención de reemplazar la imagen del código auxiliar con la imagen original en el momento de publicar (renderizar/resolver).

Dado que tenemos una enorme cantidad de contenido binario almacenado en la herramienta DAM, no queremos que los datos se vuelvan a crear como componente multimedia en tridion, si queremos usar esos datos al consultar la herramienta DAM y adjuntarlos al paquete tridion con algunos planificación de referencias lógicas para mantener el mapeo uno a uno entre el compilado multimedia de stub y el contenido original en alguna base de datos de mapeo para referencia).

Háganos saber si existe alguna solución para adjuntar contenido binario externo al paquete en tiempo de publicación.

Respuesta

10

La mejor manera, y la más sencilla, es utilizar el mecanismo proporcionado por Tridion para usarlo de inmediato. Cree un nuevo componente multimedia, seleccione "Externo" en el menú desplegable de tipo de recurso y escriba la URL al objeto. Siempre que pueda abordarlo con una URL, funcionará exactamente como lo desee (el artículo se agregará al paquete y se enviará al servidor de entrega).

Si esto no es lo suficientemente bueno para usted, entonces sí, puede agregarlo al paquete usted mismo. He hecho esto en el pasado con el código de algo como esto:

FileInfo file = // Weird logic to get a FileInfo object from external system 
Item item = package.GetItem("My original Item"); 
item.SetAsStream(file.OpenRead()); 

Esto sustituyó el contenido de mi componente original con el archivo real que quería. Esto funcionará para usted SI el componente original también es un componente multimedia. Si no es así, solo crea un nuevo elemento con tu propio nombre, etc. Si es posible, utiliza el proceso de fábrica.

PS: FileInfo Class.

9

Como sugirió Nuno, la mejor manera es usar el componente multimedia con el tipo de recurso 'Externo'. Puede que no necesite crearlos manualmente, puede automatizar el uso de servicios centrales o programas API.

Otra forma que utilicé antes para crear un archivo zip en tiempo de ejecución y agregarlo al paquete con el siguiente código. Espero que pueda ayudar.

using (MemoryStream ms = new MemoryStream()) 
       { 
        zip.Save(ms); 
        downloadAllInOneURL = String.Format("ZipAsset{0}.zip", uniqueZipID); 
        downloadAllInOneURL = m_Engine.PublishingContext.RenderedItem.AddBinary(ms, downloadAllInOneURL, "", "application/zip").Url; 
        downloadAllInOneSize = getSize(ms.Length); 

       } 
Cuestiones relacionadas