Giter VIP home page Giter VIP logo

Comments (5)

StickNitro avatar StickNitro commented on May 26, 2024

Ok, so I have found out that the generated functions return type is Task<IActionResult> and from experimenting, I have been able to return a FileContentResult from my command/handler which returns the base64 encoded file content.

I have not been able to successfully return a FileStreamResult as I get the exception below and cannot determine if this is supported or not

Newtonsoft.Json: Error getting value from 'ReadTimeout' on 'System.IO.FileStream'. System.Private.CoreLib: Timeouts are not supported on this stream.

from functionmonkey.

JamesRandall avatar JamesRandall commented on May 26, 2024

Have you got some sample code I could use to investigate?

from functionmonkey.

StickNitro avatar StickNitro commented on May 26, 2024

Yeah I was basically creating an in-memory Zip file and wanting to return that from the function, the code snippet below should help you

using (var ms = new MemoryStream())
{
  using (var archive = new ZipArchive(ms, ZipArchiveMode.Update, true))
  {
    // add entries to the zip file

    if (archive.Entries.Count > 0)
    {
      archive.Dispose();
      ms.Seek(0, SeekOrigin.Begin);
      return new FileStreamResult(ms, "application/pdf");
    }
  }
}

from functionmonkey.

JamesRandall avatar JamesRandall commented on May 26, 2024

Great thank you - I'll be doing some work on Function Monkey this weekend and I'll add this to that list: either a bug fix or a solution!

from functionmonkey.

jlocans avatar jlocans commented on May 26, 2024

Stumbled upon this myself.

To return file, you need to return it as FileContentResult and handle it in your own response handler so that it doesn't automatically convert to Base64 string.

public Task<IActionResult> CreateResponse<TCommand, TResult>(TCommand command, TResult result)
{
    if (result is FileContentResult fileContentResult)
    {
        IActionResult contentResult = new FileContentResult(fileContentResult.FileContents, fileContentResult.ContentType);
        return Task.FromResult(contentResult);
    }

     return null;
}

There could be other ways, but this one works.

from functionmonkey.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.