C# 已向zip发送可下载的http请求
我希望任何人都能帮助我,我是C语言新手,我正在制作基于输入从服务器发送文件的web API,当我输入ID时,我会得到与该ID相关的所有文件(Indesign文件、JPEG、PNG、illustator文件…) 我使用邮递员获取结果,它看起来像附件: 我必须复制每个链接并粘贴到地址栏下载文件 我想要的是只有一个包含所有文件的文件(Zip)。C# 已向zip发送可下载的http请求,c#,C#,我希望任何人都能帮助我,我是C语言新手,我正在制作基于输入从服务器发送文件的web API,当我输入ID时,我会得到与该ID相关的所有文件(Indesign文件、JPEG、PNG、illustator文件…) 我使用邮递员获取结果,它看起来像附件: 我必须复制每个链接并粘贴到地址栏下载文件 我想要的是只有一个包含所有文件的文件(Zip)。 这是否可行?谢谢我找到了解决方案,它返回了一个包含正确文件的zipfile,现在这些文件的大小为0Kb,请提供帮助? 这是我的密码 `` MemoryStre
这是否可行?谢谢我找到了解决方案,它返回了一个包含正确文件的zipfile,现在这些文件的大小为0Kb,请提供帮助? 这是我的密码 `` MemoryStream archiveStream=新的MemoryStream()
是的,你能做到。有一个新的控制器动作,它将所有文件收集在一起,生成一个zip文件(你可以用谷歌搜索你需要的代码库),并发送zip文件供下载。如何指定应包含哪些文件由您根据自己的要求决定。祝你好运一旦你做了一些研究并真正尝试了,你可以问一个更好的问题——如果你有一个特定的编码问题需要我们解决,我们很乐意帮助你解决。C!=C#(还有!=C++)我用C#表示歉意谢谢@ADyson,我已经有了从服务器获取文件的控制器,我应该为zip创建新控制器还是将其包含到我的现有控制器中?
using (ZipArchive archiveFile = new ZipArchive(archiveStream, ZipArchiveMode.Create, true))
{
foreach (var item in assetsNotDuplicated)
{
// create file streams
// add the stream to zip file
var entry = archiveFile.CreateEntry(item.Name);
using (StreamWriter sw = new StreamWriter(entry.Open()))
{
sw.Write(item.Url);
}
}
}
HttpResponseMessage responseMsg = new HttpResponseMessage(HttpStatusCode.OK);
responseMsg.Content = new ByteArrayContent(archiveStream.ToArray());
//archiveStream.Dispose();
responseMsg.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "allfiles.zip" };
responseMsg.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip");
return responseMsg;
}