1) 「/Uploads/PDF Documents」など、PDF を保存するメディア フォルダー パスがあること。
以下は、HttpPostedFile をC1 Media Archiveにアップロードする方法のサンプル コードです。
public static void UploadFileToMediaArchive(HttpPostedFile file, string mediaFolderPath)
{
try
{
WorkflowMediaFile mediaFile = new WorkflowMediaFile();
mediaFile.FileName = file.FileName;
mediaFile.FolderPath = mediaFolderPath;
mediaFile.Title = "";
mediaFile.Description = "";
mediaFile.Culture = Thread.CurrentThread.CurrentCulture.Name;
mediaFile.Length = file.ContentLength;
mediaFile.MimeType = MimeTypeInfo.GetCanonical(file.ContentType);
if (mediaFile.MimeType == MimeTypeInfo.Default)
{
mediaFile.MimeType = MimeTypeInfo.GetCanonicalFromExtension(System.IO.Path.GetExtension(mediaFile.FileName));
}
using (System.IO.Stream readStream = file.InputStream)
{
using (System.IO.Stream writeStream = mediaFile.GetNewWriteStream())
{
readStream.CopyTo(writeStream);
}
}
IMediaFile addedFile = DataFacade.AddNew<IMediaFile>(mediaFile);
}
catch (Exception ex)
{
Composite.Core.Log.LogError("UploadFileToMediaArchive", ex.Message);
}
}
2) ページに PDF ファイルを表示するには、単純な XSLT 関数を作成し、「データ中心」の関数呼び出し「GetIMedaFileXml」を使用して、MediaFolderFilter フィルターを使用します。以下は、「GetIMediaFileXml」関数呼び出しのソース コードです。
<f:function name="Composite.Data.Types.IMediaFile.GetIMediaFileXml" localname="GetIMediaFileXml">
<f:param name="PropertyNames">
<f:paramelement value="KeyPath" />
<f:paramelement value="CompositePath" />
</f:param>
<f:param name="Filter">
<f:function name="Composite.Data.Types.IMediaFile.MediaFolderFilter">
<f:param name="MediaFolder" value="MediaArchive:7dce5da6-ae73-417a-86a3-dfb7a3f05cf3" />
</f:function>
</f:param>
</f:function>