2017-09-25 92 views
0

在python龍捲風服務器中,我從客戶端的請求中獲得了一個視頻文件(如:test.mp4)。而文件的類型是'tornado.httputil.HTTPFile'。如何在python服務器中保存<httpfile>視頻

我想將它保存到我的服務器,如'./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') 

注:如果上傳的文件很大,可能會遇到一些問題。閱讀 - issue on GitHub。但是,您可以使用裝飾器來繞過這個問題,雖然我沒有任何經驗,也沒有工作代碼示例。

+1

請注意文件名。如果'info ['filename']'包含特殊字符(如'../'),打開文件可能無法做到你想要的,這是一個很大的安全風險。生成自己的文件名總是比信任客戶給你的文件名更好。 –