python tornadoサーバーでは、クライアントの要求からビデオファイル(test.mp4など)を取得しました。ファイルの種類は 'tornado.httputil.HTTPFile'です。<httpfile>をpythonサーバーで保存する方法
'./video/myvideo.mp4'のように私のサーバーに保存します。 私はopencv videoCaptureがそうするかもしれないが、APIをうまく使っていないことを知っています。
python tornadoサーバーでは、クライアントの要求からビデオファイル(test.mp4など)を取得しました。ファイルの種類は 'tornado.httputil.HTTPFile'です。<httpfile>をpythonサーバーで保存する方法
'./video/myvideo.mp4'のように私のサーバーに保存します。 私はopencv videoCaptureがそうするかもしれないが、APIをうまく使っていないことを知っています。
あなたが好きな、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
デコレータを使用することはできますが、私はその経験も実用的なコード例もありません。
ファイル名に注意してください。 'info ['filename']'に '../'のような特殊文字が含まれていると、ファイルを開くとあなたが望むことができない可能性があります。これは大きなセキュリティリスクです。クライアントが提供するファイル名を信頼するよりも、常に独自のファイル名を生成する方が良いです。 –
何が間違っているのか、あなたの解決策ではうまくいかなかったのか、コードスニペットを入れるべきかを説明してください。これは人々があなたに答えを与えるのを助けるかもしれません。 – api55