python用超軽量WEB鯖Bottleで画像を受け取る方法です
形式としては、formで添付ファイルとして来ているようなケースを想定します。
このスクリプトでは組込み機器との連携を前提にしているので投稿フォームは無し。
実際のところ
Jpeg画像を受け取るケースを考えます。
from bottle import route, request, run, get, post, static_file import os from datetime import datetime workPath = os.getcwd() + '/tmp' @post('/img') def receiveImg(): timestump = datetime.now().strftime('%m%d%H%M%S') upload = request.files.get('upload') name, ext = os.path.splitext(upload.filename) if ext not in ('.jpg','.jpeg'): return "File extension not allowed." save_path = workPath upload.filename = timestump + ext file_path = "{path}/{file}".format(path=save_path, file=upload.filename) upload.save(workPath, overwrite=True) return "" + timestump + ext + "\r\n" @get('/get/<filename>') def send_image(filename): return static_file(filename, root=workPath, mimetype='image/jpeg') if __name__ == '__main__': print(workPath) run(host='0.0.0.0', port=8080)
動作確認
アップロード
"/PATH/TO"にあるFILE.jpgをアップロードするには
$ curl -F "upload=@/PATH/TO/FILE.jpg" http://localhost:8080/img
ダウンロード
1月1日0時0分0秒の画像をfoobar.jpgとして保存するには
$ curl -o foobar.jpg http://localhost:8080/img/0101000000.jpg