![](/img/trans.png)
[英]How to download files from a database, and get them as image in Asp.net core MVC?
[英]ASP.NET MVC - how to zip and download files from database?
我是 ASP.NET MVC 的新手,我正在尝试弄清楚如何 zip 并下载存储在数据库中的文件。
我是否需要 zip 文件,将它们保存在 memory 或服务器中,然后将该文件发送给用户。 我宁愿不将其保存在服务器上。
Model:
public class Document
{
public int Id { get; set; }
public string Name { get; set; }
public string ContentType { get; set; }
public byte[] Content { get; set; }
}
Controller:
[HttpPost]
[Route("~/document/zip/{token}")]
public ActionResult DownloadZip(string token)
{
// EF6
var docs = db.Documents.ToList();
using (var memoryStream = new MemoryStream())
{
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
foreach (var doc in docs)
{
var file = archive.CreateEntry(doc.Name.ToString());
using (var streamWriter = new StreamWriter(file.Open()))
{
streamWriter.Write(doc.Name.ToString());
}
}
}
return File(memoryStream.ToArray(), "~/WebApplication/Documents", "xxxx.zip");
};
}
如果要将内容放入文件,则必须从file.Open()
中获取 stream 并将字节数组写入此 stream
[HttpPost]
[Route("~/document/zip/{token}")]
public ActionResult DownloadZip(string token)
{
// EF6
var docs = db.Documents.ToList();
using (var memoryStream = new MemoryStream())
{
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
foreach (var doc in docs)
{
var file = archive.CreateEntry(doc.Name.ToString());
using (var stream = file.Open())
{
stream.Write(doc.Content, 0, doc.Content.Length);
}
}
}
return File(memoryStream.ToArray(), "application/zip", "xxxx.zip");
};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.