#1 2016-05-18 20:52:15

Virion
Member
Registered: 2016-05-18
Posts: 3

MVC - serving binary file from stream

Hello!

I am new to mORMot, implementing Angular2 application and serving it via mORMot MVC. I want to serve binary file (jpg, pdf etc.) from DB blob as a response in MVC action. I do not use ORM part of the framework, so let's just say I have a TStream with data in it. I've managed to build my own "MVCViews" - view engine:

procedure TMVCViewsBinary.Render(methodIndex: Integer; const Context: Variant;
  var View: TMVCView);
var
  lStream : TStringStream;
begin
  lStream := TStringStream.Create;
  FillStreamWithImageDataFromMyDatabase(lStream, Context);

  View.ContentType := 'image/jpeg';
  View.Content := lStream.DataString;

  lStream.Free;
end;

Works fine, but - stream loading logic placed in view engine doesn't look like a good idea. I've tried to return loaded stream object directly from MVC action, but all return params are serialized before passed to view engine - obviously, I don't want stream to be serialized on it's way, just 'rendered'.

Is there a better way to achieve my goal?

Offline

#2 2016-05-18 21:39:57

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,239
Website

Re: MVC - serving binary file from stream

Redirect to a method based service returning the blob.

Offline

#3 2016-05-18 21:45:16

Virion
Member
Registered: 2016-05-18
Posts: 3

Re: MVC - serving binary file from stream

What type should I return in service method in order to return binary data with proper MIME declaration?

Offline

#4 2016-05-18 22:09:58

igors233
Member
Registered: 2012-09-10
Posts: 234

Re: MVC - serving binary file from stream

You should return TServiceCustomAnswer, take a look at documentation for more details.

Offline

#5 2016-05-18 22:37:39

Virion
Member
Registered: 2016-05-18
Posts: 3

Re: MVC - serving binary file from stream

Works well, thank you!

Offline

Board footer

Powered by FluxBB