kitak.blog

Kみたいなエンジニアになりたいブログ

golang で FTP でファイルを転送する

こんにちは。なすを炒めてたべました、きたけーす。

昨日のエントリ(http://kitak.hatenablog.jp/entry/2014/10/21/033956)に続いて、今度はURLの猫ちゃん画像をFTPで転送してみる。

こんなかんじ。

package main

import (
    "github.com/jlaffaye/ftp"
    "net/http"
)

func main() {
    var url string = "http://placekitten.com/g/640/340"

    response, err := http.Get(url)
    if err != nil {
        panic(err)
    }
    defer response.Body.Close()

    client, err := ftp.Connect("localhost:21")
    if err != nil {
        panic(err)
    }
    defer client.Quit()

    err = client.Login("anonymous", "")
    if err != nil {
        panic(err)
    }

    err = client.Stor("save.jpg", response.Body)
    if err != nil {
        panic(err)
    }
}

ftpのライブラリ、jlaffaye/ftp · GitHubsmallfish/ftp · GitHub がひっかかったんですが、後者は実装が雑だったり、関数がエラーを返さなかったり、サンプルのエラーハンドリングが適当だったので、前者を選択しました。