1

私は C1 を初めて使用し、単純なサイトを開発しています。今度は、大量の PDF ファイルを一覧表示するドキュメント ページと、Issuu プレーヤーで PDF を表示するためのドキュメント ビュー ページを追加する必要があります。

まず、パート 1 を要求します。

a) PDF ドキュメントをアップロードする方法は? ファイルアップロードボックスと説明ボックスを含むアップロードPDFページを作成する方法を意味します。バックエンドインターフェイスから分離されていると便利です。

b) アップロードされた PDF ドキュメントを動的に一覧表示するドキュメント ページを作成する方法は?

4

1 に答える 1

2

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>
于 2012-06-11T12:47:03.337 に答える