gpt4 book ai didi

asp.net-mvc - FileStreamResult 和 FilePathResult 之间的区别?

转载 作者:行者123 更新时间:2023-12-03 22:31:01 24 4
gpt4 key购买 nike

我有一个简单的 Controller ,它返回图像:

public class ImageController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
[OutputCache(CacheProfile = "StationeryImageCache")]
public FileResult Show(int customerId, string imageName)
{
try
{
var path = string.Concat(Config.ImageDir, customerId, @"\", imageName);
return new FileStreamResult(new FileStream(path, FileMode.Open), "image/jpeg");
}
catch(System.IO.FileNotFoundException ex)
{
throw new MissingImageException(imageName);
}
}
}

我的经理在代码审查期间注意到 FileStreamResult 并提到我应该将其替换为:
return new FilePathResult(path, "image/jpeg");

这对我来说很有意义,所以我做到了。但是几天后,我们的其他开发人员报告说,我返回的一些图像已损坏。具体来说,有很多图像在某个时候被剪掉了。图像的大小是正确的,但图像的底部 25% - 40% 只是消失了。

查看文件系统上的原始图像时,它没有任何问题。我将图像放入浏览器中,看起来不错。但我的 Controller 只返回图像的一部分。更糟糕的是,只有一些图像有问题……大约有 30 个图像……尽管我无法找到有效和无效的图像之间的任何特定差异。

在尝试调试时,我将操作的结果恢复为 FileStreamResult,然后突然一切又恢复正常了。

有谁知道对此的解释?

最佳答案

FilePathResult 中使用的 HttpResponse.TransmitFile 似乎存在或已经存在一些问题。根据此 hotfix,这可能取决于您运行服务器的 Windows 版本。 .如果您在 Google 上搜索诸如“response.TransmitFile error”之类的内容,则会遇到很多错误。

我想你应该使用你的原始代码!

关于asp.net-mvc - FileStreamResult 和 FilePathResult 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/863351/

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