gpt4 book ai didi

c# - 从 Controller 下载文件 RedirectToAction()

转载 作者:行者123 更新时间:2023-11-30 14:34:02 25 4
gpt4 key购买 nike

我有一个旧的 MVC 1.0 应用程序,我正在为一些相对简单的事情而苦苦挣扎。

  1. 我有一个允许用户上传文件的 View 。
  2. 继续进行一些服务器端处理。
  3. 最后,生成一个新文件并自动下载到客户的机器上。

我已执行第 1 步和第 2 步。我无法完成最后一步工作。这是我的 Controller :

[AcceptVerbs(HttpVerbs.Post)]
public ViewResult SomeImporter(HttpPostedFileBase attachment, FormCollection formCollection, string submitButton, string fileName
{
if (submitButton.Equals("Import"))
{
byte[] fileBytes = ImportData(fileName, new CompanyExcelColumnData());
if (fileBytes != null)
{
RedirectToAction("DownloadFile", "ControllerName", new { fileBytes = fileBytes});
}
return View();
}
throw new ArgumentException("Value not valid", "submitButton");
}

public FileContentResult DownloadFile(byte[] fileBytes)
{
return File(
fileBytes,
"application/ms-excel",
string.Format("Filexyz {0}", DateTime.Now.ToString("yyyyMMdd HHmm")));
}

代码执行:

RedirectToAction("DownloadFile", "ControllerName", new { fileBytes = fileBytes});

但是文件没有下载。欢迎提出建议并提前致谢。

最佳答案

尝试返回ActionResult ,因为它是 Action 输出的最抽象类。 ViewResult 将强制您返回一个 View 或 PartialView,因此,返回一个 File 将得到有关隐式转换类型的异常。

[HttpPost]
public ActionResult SomeImporter(HttpPostedFileBase attachment, FormCollection formCollection, string submitButton, string fileName
{
if (submitButton.Equals("Import"))
{
byte[] fileBytes = ImportData(fileName, new CompanyExcelColumnData());
if (fileBytes != null)
{
return File(
fileBytes,
"application/ms-excel",
string.Format("Filexyz {0}", DateTime.Now.ToString("yyyyMMdd HHmm")));
}
return View();
}
throw new ArgumentException("Value not valid", "submitButton");
}

关于c# - 从 Controller 下载文件 RedirectToAction(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14741625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com