最初コミット
このコミットが含まれているのは:
コミット
cf9fe092d6
|
@ -0,0 +1 @@
|
|||
imgproxy
|
|
@ -0,0 +1,42 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"io"
|
||||
"log"
|
||||
)
|
||||
|
||||
var client = http.Client{}
|
||||
|
||||
func imgproxy (w http.ResponseWriter, r *http.Request) {
|
||||
// r.URL.Pathは「/」で始まるから、「https://」じゃなくて、「https:/」となります。
|
||||
img, err := client.Get("https:/" + r.URL.Path)
|
||||
if err != nil {
|
||||
fmt.Fprintf(w, "Error %d", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 画像だけをプロクシーする様に
|
||||
ctype := img.Header.Get("Content-Type")
|
||||
if ctype != "image/jpeg" && ctype != "image/png" && ctype != "image/gif" && ctype != "image/tga" && ctype != "image/targa" && ctype != "image/webp" {
|
||||
return
|
||||
}
|
||||
|
||||
// ヘッダー
|
||||
w.Header().Set("Content-Length", fmt.Sprint(img.ContentLength))
|
||||
w.Header().Set("Content-Type", img.Header.Get("Content-Type"))
|
||||
|
||||
// 表示
|
||||
if _, err = io.Copy(w, img.Body); err != nil {
|
||||
log.Fatalf("ioエラー:%v", err)
|
||||
}
|
||||
|
||||
// もう要らない
|
||||
img.Body.Close()
|
||||
}
|
||||
|
||||
func main () {
|
||||
http.HandleFunc("/", imgproxy)
|
||||
http.ListenAndServe(":9810", nil)
|
||||
}
|
読み込み中…
新しいイシューから参照