我想要利用Response.WriteFile()
向客户机发送文件,但是当我在控制器内部实现它时,我的return View()
不再返回View。我的猜测是,响应已经对请求做出响应。你将如何利用Response.WriteFile()
,以便它返回文件,但我仍然可以返回我的视图?我想过使用StreamWriter
但路径需要根据用户的浏览器是什么设置为。有什么建议么?这样做的目的是测试给定用户下载文件所需的时间,连接测试。在控制器中使用Response.WriteFile()
public ActionResult DownloadTest()
{
SpeedTest Test = new SpeedTest();
Services.IPAddress ip = new Services.IPAddress();
var clientIP = ip.GetIPAddress();
string[] IPAddresses = clientIP.Split(':');
Test.Address = IPAddresses[0];
double speed = 0.00;
try
{
double fileSize = 2.67; //Size of File in MB.
DateTime startTime = DateTime.Now;
//Response.ContentType = "image/JPEG";
//Response.AddHeader("Content-Disposition", "attachment;filename=DownloadTest.jpg");
//Response.WriteFile(Server.MapPath("~/TestFile/2point67mb.jpg"));
DateTime endTime = DateTime.Now;
speed = Math.Round((fileSize/(endTime - startTime).TotalSeconds));
Test.ResponseTime = string.Format("{0} Mbps", speed);
Test.Status = "Success";
Test.UserId = User.Identity.GetUserId();
Test.TestDate = DateTime.Now;
db.SpeedTest.Add(Test);
db.SaveChanges();
}
catch
{
Test.ResponseTime = "N/A";
Test.Status = "Failed";
Test.UserId = User.Identity.GetUserId();
Test.TestDate = DateTime.Now;
db.SpeedTest.Add(Test);
db.SaveChanges();
}
return View(Test);
}
你可以创建一个返回'FileResult'一个新的动作,并从链接在你的'DownloadTest'查看调用此 – markpsmith