在Web Api中将Zip文件作为响应返回 [英] Return Zip file as Response in Web Api

查看:155
本文介绍了在Web Api中将Zip文件作为响应返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了一个Web api应用程序,并且我将响应作为文本文件返回.现在,我想返回一个压缩文件,以减小其大小

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

这是我的控制器代码

    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;

}

有人可以帮我吗?

推荐答案

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;
    }

这篇关于在Web Api中将Zip文件作为响应返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆