Pythonトルネードアップロードファイル機能

Tornadoは、Webサーバーソフトウェアのオープンソースバージョンです。 Tornadoは、主流のWebサーバーフレームワーク(ほとんどのPythonフレームワークを含む)とは明らかに異なります。非ブロッキングサーバーであり、非常に高速です。

ノンブロッキング方式とepollの使用のおかげで、Tornadoは毎秒数千の接続を処理できるため、TornadoはリアルタイムWebサービスの理想的なフレームワークです。

Web開発プロセスでは、ファイルのアップロードは、添付ファイルのアップロード、写真のアップロードなど、頻繁に使用される機能です。簡単なファイルアップロード機能を実現するための tornadoの使い方を紹介しましょう。

通常のアップロード

# coding: utf-8import tornado.ioloop
import tornado.web
import shutil
import os
import json
classFileUploadHandler(tornado.web.RequestHandler):
 def get(self):
 self.write('''
< html 
 < head <title Upload File</title </head 
 < body 
 < form action='file' enctype="multipart/form-data" method='post'<input type='file' name='file'/ <br/<input type='submit' value='submit'/</form 
 < /body 
< /html 
''')

 def post(self):
 ret ={'result':'OK'}
 upload_path = os.path.join(os.path.dirname(__file__),'files') #一時ファイルパス
 file_metas = self.request.files.get('file', None) #&#39;名前を抽出します'&#39;ファイルの場合'ファイルメタデータ

 if not file_metas:
  ret['result']='Invalid Args'return ret

 for meta in file_metas:
  filename = meta['filename']
  file_path = os.path.join(upload_path, filename)withopen(file_path,'wb')as up:
  up.write(meta['body'])
  # OR do other thing

 self.write(json.dumps(ret))

app = tornado.web.Application([(r'/file', FileUploadHandler),])if __name__ =='__main__':
 app.listen(8080)
 tornado.ioloop.IOLoop.instance().start()

ajaxを使用してアップロード

ajaxアップロードでは、フロントエンドがリクエストを送信する方法を変更する必要があります。次の方法を参照できます。

< html 
 < head <title Upload File</title 
 < script type="text/javascript" src="/www/static/jquery.min.js"</script 
 < /head 
 < body 
 < form id='upload' action='upload' enctype="multipart/form-data" method='post'<input type='file' name='file'/ <br/<input type='button' id='submit' value='submit'/</form 
 < /body 
 < script 
 $('#submit').click(function(){var form =$('form')[0];var formData =newFormData(form);
  formData.append('image',$('input[type=file]')[0].files[0]);
  $.ajax({
  url:'/file/upload',
  data: formData,
  type:'POST',
  contentType:false,
  processData:false,
  success:function(data){var obj = jQuery.parseJSON(data);alert(obj.result);// TODO},
  error:function(data){var obj = jQuery.parseJSON(data);alert(data.result);}})});</script 
 < /html 

注意

tornadoがファイルのアップロードを処理すると、ファイル全体がメモリに格納されます。
大きなファイルをアップロードする必要がある場合は、nginxのファイルアップロードモジュール(サードパーティモジュールをコンパイルする必要があります)が一般的に使用されます。

総括する

これまでに、Pythonトルネードアップロードファイルの機能に関するこの記事を紹介しました。関連するPythonトルネードアップロードファイルのコンテンツについては、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後、ZaLou.Cnをサポートしていただければ幸いです。 !

Recommended Posts

Pythonトルネードアップロードファイル機能
Pythonはftpファイル転送機能を実装しています
Pythonファイル操作
Python enumerate()関数
Python関数バッファー
Pythonカスタム関数の基本
Python組み込み関数-compile()
Python関数の基礎学習
Pythonデータ分析-関数の適用
Python3組み込み関数table.md
Pythonプリントプリントタイマー機能
Pythonの上位関数の使用法の概要!
PythonはTCPファイル転送を実装します
Pythonマジック関数eval()学習
PythonがFTP機能を実装する方法
クイックスタートPythonファイル操作
Pythonは画像スティッチング機能を実装しています
スーパーバイザー+ Nginx + Python3はトルネードを展開します
Pythonの上位関数の使用法の概要!
Python |再帰を使用して解決する関数
Pythonファイルの読み取りおよび書き込み操作
pythonftpアップロードファイルとフォルダー
Pythonが関数のオーバーロードをサポートしないのはなぜですか?
Pythonの3日目の1行関数の学習
python設定ファイルの書き方
Pythonファイル操作の基本的なプロセス分析
Python関数の定義とパラメーターの説明
PythonはAIフェイスチェンジ機能を実装しています
ubuntuはip&FDFSアップロードファイルエラーを修正しました
Pythonは画像認識カー機能を実現
Pythonはudp送信画像機能を実現します
Pythonがファイルディレクトリでどのように動作するか
Pythonがタイマー機能を実装する方法