在更新了go appengine的新版本后,我无法将图像加载到页面中。我不知道我错过了什么,但之前它过去很简单。 我能够编译代码,但是当我在浏览器上启动应用程序时,我收到了消息:
资源解释为图像但使用MIME类型text / html传输:http:// [...] /img/myimg.jpg
我的应用程序就像这样简单:
的index.html
<!DOCTYPE html>
<html>
<title>Hello</title>
<head>
</head>
<body>
<h1>Welcome to my website</h1>
<img src="img/myimg.png" />
</body>
</html>
的app.yaml
application: myapp
version: 1
runtime: go
api_version: go1
handlers:
- url: /.*
script: _go_app
- url: /img
static_dir: img
mime_type: image/jpg
hello.go
package hello
import (
"net/http"
"text/template"
)
func init() {
http.HandleFunc("/", handler)
}
func handler(w http.ResponseWriter, r *http.Request) {
template.Must(template.ParseFiles("index.html")).Execute(w, nil)
}
documentation说:“每个文件都使用与其文件扩展名相对应的MIME类型提供,除非被目录的mime_type设置”覆盖,但无论是否有所不同我是否在app.yaml文件中定义了mime_type。
此论坛上有很多相关问题,但我找不到任何可以有效解决问题的答案。
就像一张纸条,我尝试过不同的图像(jpg和png),以确保它不是图像本身的问题。我还将相同的应用程序(html和图像)部署到apache webserver,它运行正常。
答案 0 :(得分:2)
你app.yaml错了,你的img处理程序应该是第一个,目前img / myimg.jpg将由你的主app处理程序处理,因此文本/ html响应。
记住处理程序按照它们的定义顺序进行匹配,如果使用/.*
作为正则表达式,主处理程序将捕获所有内容。
此外,您的图片代码应该是绝对的,否则如果您有多个页面深度,则相对img路径将附加到页面。