asp.net web api如何从多个服务器文件创建zip文件并下载您机器中的zip文件

时间:2018-02-20 19:02:59

标签: c# angularjs download httpresponse zipfile

我正在尝试从网络中获取多个文件并压缩成一个文件,然后打开一个窗口以允许用户将压缩文件保存在他/她的机器中。

我当前的工作代码会压缩文件并将其返回到angularJS中的客户端,但它不会启动下载。从客户端我正在进行git调用,获取对象列表并将其传递给downloadFiles函数。我想从API处理下载,而不是从客户端处理。 // obj List包含需要在zip下载的所有文件信息

public HttpResponseMessage downloadFiles(List<obj> arr)
    {
        using (ZipFile zip = new ZipFile())
        {
            foreach (var d in arr)
            {
                zip.AddEntry(d.FileName, d.URL);
            }
            return ZipContentResult(zip);
        }
    }

    protected HttpResponseMessage ZipContentResult(ZipFile zipFile)
    {
        var pushStreamContent = new PushStreamContent((stream, content, context) =>
        {
            zipFile.Save(stream);
            stream.Close();
        }, "application/zip");

        return new HttpResponseMessage(HttpStatusCode.OK) { Content = pushStreamContent };
    }

0 个答案:

没有答案