3

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.

user1918525
  • 33
  • 1
  • 4

1 Answers1

0

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";
Community
  • 1
  • 1
SliverNinja - MSFT
  • 31,051
  • 11
  • 110
  • 173
  • 1
    very useful - thank you - using this in combination with the filetable file_stream column to get the data and actually using Response.BinaryWrite to open file in browser. Thanks! – user1918525 Jan 04 '13 at 09:27