2017-09-25 7 views
0

python tornadoサーバーでは、クライアントの要求からビデオファイル(test.mp4など)を取得しました。ファイルの種類は 'tornado.httputil.HTTPFile'です。<httpfile>をpythonサーバーで保存する方法

'./video/myvideo.mp4'のように私のサーバーに保存します。 私はopencv videoCaptureがそうするかもしれないが、APIをうまく使っていないことを知っています。

+1

何が間違っているのか、あなたの解決策ではうまくいかなかったのか、コードスニペットを入れるべきかを説明してください。これは人々があなたに答えを与えるのを助けるかもしれません。 – api55

答えて

1

あなたが好きな、Pythonの組み込みのopen()機能を使用してファイルを保存することができます:場合:

with open('myfile.txt', 'w') as f: 
    f.write('Hello world') 

簡単なトルネード例:

class UploadHandler(tornado.web.RequestHandler): 
    # ... 
    def post(self): 
     for field_name, files in self.request.files.items(): 
      for info in files: 
       filename = info['filename']# name of the file 
       body = info['body'] # contents of the file 

       with open('video/%s' % filename, 'w') as f: 
        f.write(body) 

     self.write('Upload successful') 

NOTEをアップロードされたファイルが大きい場合、いくつかの問題に直面する可能性があります。これを読む - issue on GitHub。しかし、この問題を回避するためにtornado.web.stream_request_bodyデコレータを使用することはできますが、私はその経験も実用的なコード例もありません。

+1

ファイル名に注意してください。 'info ['filename']'に '../'のような特殊文字が含まれていると、ファイルを開くとあなたが望むことができない可能性があります。これは大きなセキュリティリスクです。クライアントが提供するファイル名を信頼するよりも、常に独自のファイル名を生成する方が良いです。 –

関連する問題