C# 无效的拉链。如何将zip文件作为流发送到客户端?
我的目标是创建一个zip文件,向其中添加一个文本文件,将其保存为流,并将其发送到客户端,以便下载 但是当我试图下载它时,我得到了一个无效的zip文件,但它至少有越来越小的正确大小。我的猜测是,我对客户端的流做了一些完全错误的事情 如何将zip文件作为流发送到客户端 发送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.
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
?没有。。。我只是想让我的生活变得比现在更艰难,这要感谢复制粘贴的东西,而不去想我在复制什么。。。它解决了我的问题。