Download documents with the API
When you create a document within Sitefinity CMS,you can choose to store the actual content of the document in the database, file system, or even in cloud blob storage. Where you store your document depends on the type of storage provider you selected for the particular library. You can retrieve and save the content of the document in another storage or location at a later point of time.
The following example demonstrates how to retrieve the content of an already uploaded Sitefinity CMS document and store it in a physical folder on the server where your web application is hosted. To do so, use the following code:
C#
using System;
using System.IO;
using System.Linq;
using Telerik.Sitefinity.Modules.Libraries;
namespace SitefinityWebApp
{
public partial class DownloadSitefinityDocs : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var librariesManager = LibrariesManager.GetManager();
var document = librariesManager.GetDocuments().FirstOrDefault(x => x.Title == "TestDocument");
this.DownloadDocument(document.Id, "~/App_Data/MyDocuments");
}
public void DownloadDocument(Guid documentId, string relativePath)
{
var librariesManager = LibrariesManager.GetManager();
var document = librariesManager.GetDocument(documentId);
if (document != null)
{
using (var stream = librariesManager.Download(document))
{
// Map the relative path where the document is going to be downloaded
// to the corresponding physical path and include the document name and extension.
var physicalPath = this.Server.MapPath(relativePath);
var documentName = string.Concat(document.Title, document.Extension);
var fullPath = Path.Combine(physicalPath, documentName);
this.SaveStreamToFile(stream, fullPath);
}
}
}
public void SaveStreamToFile(Stream stream, string filePath)
{
// Convert the document stream into a byte array
// and write its content to a file
var bytesInStream = new byte[stream.Length];
stream.Read(bytesInStream, 0, bytesInStream.Length);
File.WriteAllBytes(filePath, bytesInStream);
}
}
}
In the code above, you:
- Get an instance of the
LibrariesManagerclass and retrieve a document by its ID. - Use the
Downloadmethod of the library manager to retrieve a stream with the content of the document. - Compose the physical path where the document is going to be saved. Finally, you r
- Read the byte array representation of the document stream and write it to a file with the specified path.
Want to learn more?
Enhance your Sitefinity skills by enrolling in free training sessions. Become Sitefinity certified through Progress Education Community to strengthen your professional credentials.
Get started with Integration Hub | Sitefinity Cloud
This free lesson teaches administrators, marketers, and other business professionals how to use Sitefinity Integration Hub to create automated workflows between Sitefinity and other business systems.
Web Security for Sitefinity Administrators
This free lesson teaches administrators the basics about protecting your Sitefinity instance and your sites from external threats. Configure HTTPS, SSL, allow lists for trusted sites, and cookie security, among others.
Foundations of Sitefinity ASP.NET Core Development
The free on-demand video course teaches developers how to use Sitefinity ASP.NET Core and take advantage of its decoupled architecture and modern development model.