-2

Hi I have created a web api application and I am returning response as text file. Now I want to return a zipped file so that its size is reduced

This is my controller code

    public HttpResponseMessage Get(String parameter)
    {
        var response = new HttpResponseMessage(HttpStatusCode.OK);
        response.Content = new StringContent(informationcontext.Records(parameter));
        response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = "sample"
        };


        return response;

}

Can any one help me in this?

wazza
  • 770
  • 5
  • 17
  • 42
  • Possible duplicate of http://stackoverflow.com/questions/22176147/how-to-send-zip-files-to-asp-net-webapi – mittmemo Oct 07 '15 at 13:15
  • 1
    Looks at this one? : http://stackoverflow.com/questions/14573915/using-asp-net-web-api-how-can-a-controller-return-a-collection-of-streamed-imag – Simon Demeulemeester Oct 07 '15 at 13:52
  • Possible duplicate of [How do I ZIP a file in C#, using no 3rd-party APIs?](http://stackoverflow.com/questions/940582/how-do-i-zip-a-file-in-c-using-no-3rd-party-apis) – Liam Nov 08 '16 at 09:55

1 Answers1

1
public HttpResponseMessage Post()
    {
        var ch = new ClientHandler();
        using (MemoryStream rms = new MemoryStream(Request.Content.ReadAsByteArrayAsync().Result))
        {
            using (GZipStream unzip = new GZipStream(rms, CompressionMode.Decompress))
            {
                ch.Requests = XElement.Load(unzip);
            }
        }

        MemoryStream outstream = new MemoryStream();
        try
        {
            ch.Start();
            using (GZipStream zip = new GZipStream(outstream, CompressionMode.Compress, true))
            {
                ch.Responses.Save(zip);
            }
        }
        catch (Exception ex)
        {
            XElement responses = new XElement("Responses");
            responses.Add(new XElement("Error", ex.Message));
            using (GZipStream zip = new GZipStream(outstream, CompressionMode.Compress, true))
            {
                responses.Save(zip);
            }
        }
        finally
        {
            ch.Dispose();
        }
        outstream.Position = 0;

        HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
        result.Content = new StreamContent(outstream);
        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        return result;
    }
Eric
  • 11
  • 1