Jos*_*osh 4 image asp.net-mvc-2
我在数据库中有图像,我想返回图像以便从动作中查看.这是我的行动.
public FileContentResult Index(ItemImageRequest request)
{
var result = queueService.GetItemImage(request);
if (result.TotalResults == 0)
return File(new byte[0], "image/jpeg");
var image = result.FirstResult;
return File(image.Image, "image/tif");
}
Run Code Online (Sandbox Code Playgroud)
我也试过这段代码
public FileStreamResult Index(ItemImageRequest request)
{
//retrieval omitted
var image = result.FirstResult;
System.IO.Stream stream = new System.IO.MemoryStream(image.Image);
return new FileStreamResult(stream, "image/tif");
}
Run Code Online (Sandbox Code Playgroud)
当我在浏览器中执行操作时,它会提示我下载.我不希望它下载,我希望它在浏览器中显示.我该如何做到这一点?
如果你使用return Controller.File(filename, ...),你将返回一个FilePathResult,这可能不是你想要的 - 我假设你的样本中的'image'是一个图像文件名('var'没有帮助任何人的情况...... )
如果您使用其他File重载之一,或直接使用FileContentResult或FileStreamResult,您将获得所需的效果.
您不需要创建自定义的ActionResult类(当然,它可能因其他原因而有用.)
但是,刚刚写完所有这些,我意识到你的问题是TIFF不是一种文件格式,浏览器总是(永远?)在内部显示,这可能是他们提示下载的原因.
您需要将其重新渲染为PNG或服务器上的某些内容才能在浏览器中显示.
所述File的ActionResult添加一行到这样的HTTP标头:
Content-disposition: attachment; filename=foo
Run Code Online (Sandbox Code Playgroud)
这将导致浏览器尝试下载该文件.这就是指定文件名的重载原因.
您可以创建自己的ActionResult来进行下载,并省略Content-disposition.
如果你想复制和粘贴,我在codeplex上有一个代码:ImageResult.cs
| 归档时间: |
|
| 查看次数: |
7895 次 |
| 最近记录: |