9
votes

Est-il possible de définir une limite de taille de fichier uploadé dans une tornade?

J'utilise tornade pour faire une image de traitement de service RESTful qui accepte les images téléchargées par HTTP générales comme multipart / form-data . Je les ai alors l'accès à des gestionnaires en utilisant self.request.files .

Il pourrait être qu'un adversaire va essayer de télécharger un énorme fichier pour briser un service. Est-il possible de dire tornade une limite de taille de fichier téléchargé, dépassant quel fichier doit être mis au rebut et de l'état HTTP d'erreur doit être réglé?


0 commentaires

3 Réponses :


2
votes

Vous devez configurer ce serveur sur le Web. Par exemple, en utilisant nginx:

client_max_body_size 50M;


2 commentaires

La question est de savoir comment configurer cette option pour tornade .


Désolé, j'ai modifié ma question pour contenir un peu plus d'informations utiles.



4
votes

Vous pouvez passer un paramètre max_buffer_size lors de la création du serveur. Par exemple, pour permettre 160 Mo upload "

HTTPServer(app, max_buffer_size=167772160)


0 commentaires

11
votes

Je l'ai essayé, ça marche! max_buffer_size code> valeur par défaut est 100 M.

import tornado.httpserver

app = tornado.web.Application([
    (r'/upload/', UploadFileHandler),
])

server = tornado.httpserver.HTTPServer(app, max_buffer_size=10485760000)  # 10G
server.listen(8888)
tornado.ioloop.IOLoop.instance().start()


0 commentaires