Twitter / ymmt2005: むう、mime/multipart の ...ファイルから
むう、mime/multipart の CreateFormFile の Content-Type は application/octet-stream 固定になっている。泣ける。。#golang https://code.google.com/p/go/source/browse/src/pkg/mime/multipart/writer.go#128
https://twitter.com/ymmt2005/status/431143170659717120
multipart.CreateFormFile
を呼ぶと io.Writer が返ります。この writer は隠ぺいされているのでパートのヘッダを書き換える事は出来ません。この場合は
multipart.CreatePart
を使います。
package main
import (
"bytes"
"io"
"log"
"mime/multipart"
"net/textproto"
"os"
)
func main() {
var b bytes.Buffer
w := multipart.NewWriter(&b)
part := make(textproto.MIMEHeader)
part.Set("Content-Type", "application/vnd.ms-excel")
part.Set("Content-Disposition", `form-data; name="file"; filename="Foo.xlsx"`)
pw, err := w.CreatePart(part)
if err != nil {
log.Fatal(err)
}
f, err := os.Open("Foo.xlsx")
if err != nil {
log.Fatal(err)
}
io.Copy(pw, f)
w.Close()
b.WriteTo(os.Stdout)
}