Reputation: 6389
I'm new to C1 and I'm developing a simple site, now I need to add Documents page which one lists a bunch of PDF files and document view page to display PDF in Issuu player.
First I'll ask for the part 1:
a) How to upload PDF docs? I mean how to create an Upload PDF page which one includes file upload box and description box, it would be nice if it's isolated from the backend interface.
b) How to create Documents page which one dynamically lists uploaded PDF docs?
Upvotes: 1
Views: 896
Reputation: 361
1) F.e. you have the Media Folder Path where you will store the PDFs, for example "/Uploads/PDF Documents"
Below is a sample code how to upload HttpPostedFile to the 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) To display PDFs files on the page you can create a simple XSLT function, then use "data-centric" function call "GetIMediaFileXml" and use MediaFolderFilter filter. Below is the source code of the "GetIMediaFileXml" function call:
<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>
Upvotes: 2