【问题标题】:How to create document upload and document list pages in Composite C1如何在 Composite C1 中创建文档上传和文档列表页面
【发布时间】:2012-04-12 13:10:11
【问题描述】:
我是 C1 的新手,我正在开发一个简单的网站,现在我需要添加文档页面,其中列出了一堆 PDF 文件和文档视图页面以在 Issuu 播放器中显示 PDF。
首先我会要求第 1 部分:
a) 如何上传 PDF 文件?我的意思是如何创建一个包含文件上传框和描述框的上传PDF页面,如果它与后端界面隔离就好了。
b) 如何创建动态列出上传的 PDF 文档的文档页面?
【问题讨论】:
标签:
c#
content-management-system
c1-cms
【解决方案1】:
1) F.e.您有存储 PDF 的媒体文件夹路径,例如“/Uploads/PDF Documents”
以下是如何将 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 函数,然后使用“以数据为中心”的函数调用“GetIMediaFileXml”并使用 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>