Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

Bottleでフォーム経由でファイルアップロード

shuzo-kino.hateblo.jp
ではAPI的な画像アップ先をつくりました。

$ curl -F "upload=@/PATH/TO/FILE.EXT" http://localhost:8080/img

な感じでブンなげる奴ですね。

実際のところ

from bottle import route, request
@route('/upload', method='POST')
def do_upload():
    name = request.forms.name
    data = request.files.data
    if name and data and data.file:
        raw = data.file.read() # This is dangerous for big files
        filename = data.filename
        with open(filename,'w') as open_file:
            open_file.write(data.file.read())
        return "Hello %s! You uploaded %s (%d bytes)." % (name, filename, len(raw))
    return "You missed a field."
<form action="/upload" method="post" enctype="multipart/form-data">
  <input type="text" name="name" />
  <input type="file" name="data" />
</form>

まぁ、当然のように……というか、以下のようなシンプルなフォームがでてきます。
f:id:shuzo_kino:20180228233527p:plain

ここにファイルをアップすると、コンソールに以下のような感じで表示されます。

Hello YOURANME! You uploaded yourfile.json (1234 bytes)."

参考もと

bottlepy.org