【发布时间】:2010-08-27 02:49:13
【问题描述】:
我正在 ASP.NET MVC 2(在 .NET 4.0 框架下)中创建一个简单的控制器操作,它将调整文件的大小。
我有一个这样的控制器(我把它剪掉了一点):
public ActionResult GetFile(int fileId, string fileSource) {
FileInfo file = repo.FindFileById(fileId);
//do some resizing
string mimeType = string.Empty;
switch(file.Extension) {
case ".jpg":
mimeType = "image/jpg";
break;
//some more stuff
default:
mimeType = "text/png";
break;
}
return File(file.FullName, mimeType);
}
在保存良好的文件系统上,我可以查看调整大小的文件,但在浏览器中该文件不呈现。
我使用 Charles 检查响应,返回的 HTTP 状态为 200,但图像不可见。
如果我尝试保存图像并查看它,Windows 图片查看器说它已损坏。
我也尝试过使用 ZIP(不调整大小;)),它返回一个损坏的 ZIP 文件。
我确定我只是做错了什么,但我终生无法发现它。
编辑
我已经在 Cassini 和 IIS 7.5 (Windows 7) 中进行了测试,并在这两种情况下都收到了问题。
【问题讨论】:
-
我并不是说这可以解释您的问题,但作为旁注,您的默认值不应该是“text/html”吗?
-
未经测试的暗中刺伤,尝试使用 FileResult 而不是 ActionResult?
-
您能否提供一个简化版本的图像大小调整代码来说明问题以及我们可以用来重现此行为的示例图像?
-
@Darin Dimitrov - 我 100% 确定这不是调整大小的代码。如前所述,我测试了发送 ZIP(使用正确的 ZIP mime 类型)并且发生了同样的问题
标签: asp.net-mvc asp.net-mvc-2 fileresult