【问题标题】: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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      相关资源
      最近更新 更多