Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

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