gpt4 book ai didi

c# - 从操作返回图像会导致 FireBug/Chrome Dev 出错。工具

转载 作者:可可西里 更新时间:2023-11-01 08:09:49 25 4
gpt4 key购买 nike

我有一个将图像上传到数据库的简单表单。使用 Controller 操作,然后可以返回图像(我已经硬编码为在这段代码中使用 jpeg):

public class ImagesController : Controller
{
[HttpPost]
public ActionResult Create(HttpPostedFileBase image)
{
var message = new MessageItem();
message.ImageData = new byte[image.ContentLength];
image.InputStream.Read(message.ImageData, 0, image.ContentLength);
this.session.Save(message);
return this.RedirectToAction("index");
}

[HttpGet]
public FileResult View(int id)
{
var message = this.session.Get<MessageItem>(id);
return this.File(message.ImageData, "image/jpeg");
}
}

效果很好,直接浏览图像(例如 /images/view/1)正确显示图像。然而,我注意到当 FireBug 打开时,我看到了一个可爱的错误:

Image corrupt or truncated: data:image/jpeg;base64,/f39... (followed by the base64 representation of the image).

另外在 Chrome 开发者工具中:

Resource interpreted as Document but transferred with MIME type image/jpeg.

我检查了返回的 header 。以下是发送回浏览器的 header 示例。没有任何异常(可能是 Cache-Control?):

Cache-Control       private, s-maxage=0
Content-Type image/jpeg
Server Microsoft-IIS/7.5
X-AspNetMvc-Version 3.0
X-AspNet-Version 4.0.30319
X-SourceFiles =?UTF-8?B?(Trimmed...)
X-Powered-By ASP.NET
Date Wed, 25 May 2011 23:48:22 GMT
Content-Length 21362

此外,我想我会提到我在 IIS Express 上运行它(甚至在 Cassini 上测试过,结果相同)。

奇怪的是图像显示正确,但控制台告诉我不是这样。理想情况下,我不想忽略这些错误。最后,更令人困惑的是,当作为图像引用时(例如 <img src="/images/view/1" /> ),不会发生错误。

编辑:无需上述任何操作即可完全重现:

public class ImageController : Controller
{
public FileResult Test()
{
// I know this is directly reading from a file, but the whole purpose is
// to return a *buffer* of a file and not the *path* to the file.
// This will throw the error in FireBug.
var buffer = System.IO.File.ReadAllBytes("PATH_TO_JPEG");
return this.File(buffer, "image/jpeg");
}
}

最佳答案

您假设 MIME 类型始终是 image/jpeg,并且您没有使用上传图像的 MIME 类型。我已经看到不同浏览器为上传的图像发布的 MIME 类型:

  • 图片/动图
  • 图片/jpeg
  • 图片/pjpeg
  • 图片/png
  • 图片/x-png
  • 图片/bmp
  • 图片/tiff

可能 image/jpeg 不是该文件的正确 MIME 类型,开发工具会向您发出警告。

关于c# - 从操作返回图像会导致 FireBug/Chrome Dev 出错。工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6132426/

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