C# 无效的拉链。如何将zip文件作为流发送到客户端?

C# 无效的拉链。如何将zip文件作为流发送到客户端?,c#,angularjs,asp.net-mvc,dotnetzip,C#,Angularjs,Asp.net Mvc,Dotnetzip,我的目标是创建一个zip文件,向其中添加一个文本文件,将其保存为流,并将其发送到客户端,以便下载 但是当我试图下载它时,我得到了一个无效的zip文件,但它至少有越来越小的正确大小。我的猜测是,我对客户端的流做了一些完全错误的事情 如何将zip文件作为流发送到客户端 发送zip文件的控制器: var zipFile = new ZipFile(); var stream = new MemoryStream(); zipFile.AddFile("path/to/file"); zipFile.

我的目标是创建一个zip文件,向其中添加一个文本文件,将其保存为流,并将其发送到客户端,以便下载

但是当我试图下载它时,我得到了一个无效的zip文件,但它至少有越来越小的正确大小。我的猜测是,我对客户端的流做了一些完全错误的事情

如何将zip文件作为流发送到客户端

发送zip文件的控制器:

var zipFile = new ZipFile();
var stream = new MemoryStream();

zipFile.AddFile("path/to/file");
zipFile.Save(stream);
stream.Seek(0, SeekOrigin.Begin);

var httpResponseMessage = new HttpResponseMessage();
httpResponseMessage.Content = new StreamContent(stream);
httpResponseMessage.Content.Headers.Add("zip-filename", "test_originalfile.zip");
httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip");
httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
httpResponseMessage.Content.Headers.ContentDisposition.FileName = "test_originalfile.zip";
httpResponseMessage.StatusCode = HttpStatusCode.OK;
return httpResponseMessage;
接收它的控制器:

$http.get(applicationServerUrl + '/api/UploadedFiles/GetZip?uploadedFileId=' + uploadedFileId)
.success(function (data, status, headers) {
    headers = headers();

    var filename = headers['zip-filename'];
    var contentType = headers['content-type'];

    var linkElement = document.createElement('a');
    try {
        var blob = new Blob([data], { type: contentType });
        var url = window.URL.createObjectURL(blob);

        linkElement.setAttribute('href', url);
        linkElement.setAttribute("download", filename);

        var clickEvent = new MouseEvent("click", {
            "view": window,
            "bubbles": true,
            "cancelable": false
        });
        linkElement.dispatchEvent(clickEvent);
    } catch (ex) {
        console.log(ex);
    }
}).error(function (data) {
    console.log(data);
});

我不明白你的问题和你的问题之间的联系。请参阅创建一个应用程序的说明。@TimRogers很抱歉我的问题不清楚。我编辑它。我希望你能更好地理解这一点。你为什么在客户面前让自己的生活如此艰难?
window.location.href=applicationServerUrl+'/api/UploadedFiles/GetZip有什么问题?uploadedFileId='+uploadedFileId
?没有。。。我只是想让我的生活变得比现在更艰难,这要感谢复制粘贴的东西,而不去想我在复制什么。。。它解决了我的问题。