Question

I have a Filetable containing many different document types (.doc;.pdf;.xls etc).

I am writing a small web (C# / .net 4) search app. Search works great using fulltext index with filetable to find content.

But I'm struggling to find a way in my app to have the search results as links which can launch the document in question? And just handle the different file types? (Assume client has Word/adobe/excel installed etc)

Grateful for any advice.

Was it helpful?

Solution

You will need to write a custom page handler to stream the bytes to the client with the proper HTTP headers. You will need to decide whether to support inline viewing (open in the browser - Content-Disposition: inline) versus external viewing using an attachment (e.g. Content-Disposition: attachment).

Response.AddHeader("Content-Disposition", "attachment; filename=example.pdf");

If you are using ASP.NET MVC - you can leverage the FileResult to streamline this process, but creating your own handler wouldn't be too much different.

public FileResult Download()
{
    byte[] fileBytes = ...; // from FileTable
    string fileName = "example.txt";
    return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}

The best approach to handling various MIME types (PDF, DOC, XLS) is to statically define the supported file types or dynamically read IIS and assign the appropriate Content-Type HTTP header.

Response.ContentType = "application/pdf";
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top