ASP.net Web Api下载和查看图像
本文关键字:图像 下载和 Api net Web ASP | 更新日期: 2023-09-27 17:59:54
我想从服务器下载图像并在浏览器中显示。但是,当我在浏览器中输入url(localhost:port/api/service/imageID)时,会出现下载框,询问我是保存还是打开图像。但我希望图像直接显示在浏览器中。这是我的控制器"获取"方法:
public HttpResponseMessage Get(int id)
{
HttpResponseMessage response;
var image = _repository.RetrieveImage(id);
if (image == null)
{
response = new HttpResponseMessage(HttpStatusCode.NotFound);
}
else
{
response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(new MemoryStream(image.ImageData));
response.Content = new ByteArrayContent(image.ImageData);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = image.OriginalFileName;
response.Content.Headers.ContentType = new MediaTypeHeaderValue(image.Mime);
response.Content.Headers.ContentLength = image.ImageData.Length;
}
return response;
非常感谢您的帮助
不要使用"附件"内容处置标头。使用该标头指示浏览器下载指定的文件,而不是内联显示。
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
为了完整起见,请注意,当使用"另存为"上下文菜单保存时,删除Content-Disposition
也会删除文件名的任何提示,并且会根据URL建议文件名,在这种情况下,它将类似于"42.jpg",因为URL的最后一部分是ID。如果您想在保存期间保留文件名,请将Content-Disposition
更改为"inline":
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("inline")
{
FileName = image.OriginalFileName,
Size = image.ImageData.Length
};
对于您的场景,我认为您可以返回一个StreamContent并提供该内容的适当内容类型标头。(例如:image/jpeg)