0

我已经在我的对象中创建了一个图像,所以我可以将它绘制到我的画布上......我是这样做的:

item[id].img = new Image();
item[id].img.src = './image_folder/'+data[i][j].image;

然后我的画布在这条线上绘制:

canvas[2].ctx.drawImage(item[theID].imge, px, py);

它工作正常,但在 Chrome 控制台中它说:

Resource interpreted as Image but transferred with MIME type text/html

我很好奇这实际上意味着什么以及如何纠正它?

4

1 回答 1

0

当您从服务器请求内容时,它们将发送“标头”以及正在发送的任何内容。

这就是浏览器如何弄清楚如何使用视频或音乐,或者知道如何使用 JS 或 CSS。

现代浏览器在处理这些事情方面非常聪明,但是如果您尝试将 .mp3 发送到不知道如何使用 .mp3s 的浏览器,它可能会尝试将文件作为文本加载,您会得到很多有趣的人物。

大多数情况下,MIME 类型可以避免这种情况。如果您要求下载 .mp3,服务器可能会发送一个类似于“Content-Type: audio/mpeg codecs=mp3”的标头。
相比之下,常规网页将作为“Content-Type: text/html”发送,而 .png 图像将作为“Content-Type: image/png”发送。

如果您在使用 WAMP 安装程序或 EasyPHP 或其他方式安装的测试服务器上玩耍,您的服务器可能不知道.png使用“image/png”MIME 类型提供文件。

智能浏览器将读取文件的内容并尝试找出它们应该是什么,如果它们被赋予了错误的文件 MIME 类型(这就是你的图像首先工作的原因)。

这个特定的错误可能不会伤害任何人(因为无法确定您有 .png 文件的浏览器可能是没有 .png 文件的浏览器<canvas>)。
但是要在其他情况下修复它(例如.ogg文件<audio><video>支持,这很重要),您应该弄清楚您正在运行哪种服务器(我的钱在 Apache 上),并弄清楚如何添加 mime-type 和 file-类型声明。

您可以通过 Google 搜索找到它,例如“将 mime-types 添加到 apache”。

如果这是一个在线的服务器,并且您正在为托管付费,那么您需要通过您的托管站点进行设置。

于 2013-02-18T04:58:38.833 回答