0
行動:如何使用一個actionlink下載mvc4中的多個文件?
public ActionResult Download(string filename)
{
var filenames = filename.Split(',').Distinct();
var dirSeparator = Path.DirectorySeparatorChar;
foreach (var f in filenames)
{
if (String.IsNullOrWhiteSpace(f)) continue;
var path = AppDomain.CurrentDomain.BaseDirectory + "Uploads" + dirSeparator + f;
if (!System.IO.File.Exists(path)) continue;
return new BinaryContentResult
{
FileName = f,
ContentType = "application/octet-stream",
Content = System.IO.File.ReadAllBytes(path)
};
}
return View("Index");
}
BinaryContentResult方法:
public class BinaryContentResult : ActionResult
{
public string ContentType { get; set; }
public string FileName { get; set; }
public byte[] Content { get; set; }
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.ClearContent();
context.HttpContext.Response.ContentType = ContentType;
context.HttpContext.Response.AddHeader("content-disposition", "attachment; filename=" + FileName);
context.HttpContext.Response.BinaryWrite(Content);
context.HttpContext.Response.End();
}
}
觀點:
@{
foreach (var item in Model)
{
@Html.ActionLink("Link","Index", "FileUpload", new { postid = item.PostId })
}
}
但ActionLink的只是下載一個(最前一頁)文件。
你爲什麼要重新發明'FileStreamResult'較慢的版本? – SLaks 2013-03-11 13:45:42
HTTP不支持。 – SLaks 2013-03-11 13:46:08
如何使用'FileStreamResult'? – 2013-03-11 13:49:23