可以在返回结果时手动添加Content-Disposition头部来解决这个问题。例如,可以在控制器中使用以下代码来返回文件并设置文件名:
public ActionResult DownloadFile()
{
// 获取文件字节数组(这里假设文件已经被读取到了byteArray中)
byte[] byteArray = GetFileBytes();
// 创建文件流
MemoryStream stream = new MemoryStream(byteArray);
// 设置文件名
string fileName = "example.pdf";
// 创建文件结果对象
var result = new FileStreamResult(stream, "application/pdf");
result.FileDownloadName = fileName;
// 添加Content-Disposition头部
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
return result;
}
这段代码中,我们首先创建了一个内存流并将文件字节数组写入其中。然后,我们创建了一个FileStreamResult对象并将内存流作为其参数,同时指定了适当的MIME类型。接下来,我们为结果对象设置了文件名。最后,我们手动将Content-Disposition头部添加到响应中,以确保浏览器会下载文件而不是直接在浏览器中打开它。