Guest User

Untitled

a guest
Jan 17th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. import time
  2.  
  3. import werkzeug.formparser
  4. from flask import Flask, Response, request
  5.  
  6.  
  7. class DummyWerkzeugFile:
  8. def write(self, b: bytes):
  9. print('reading file parts: size=%s' % len(b))
  10.  
  11. def seek(self, *args, **kwargs):
  12. # Hack: this is how we know we've finished reading the request file.
  13. return 0
  14.  
  15.  
  16. def stream_factory(total_content_length, content_type, filename, content_length=None):
  17. print(
  18. 'Start writing to stream: '
  19. 'total_content_length=%s, content_type=%s, filename=%s, content_length=%s' % (
  20. total_content_length, content_type, filename, content_length
  21. )
  22. )
  23. # Here we can return anything with a write(b: bytes) and seek() method, like a file.
  24. return DummyWerkzeugFile()
  25.  
  26.  
  27. def main():
  28. app = Flask('file-streamer')
  29.  
  30. @app.route('/upload', methods=['POST'])
  31. def upload():
  32. print('Starting to read request')
  33. start = time.time()
  34.  
  35. stream, form, files = werkzeug.formparser.parse_form_data(
  36. request.environ, stream_factory=stream_factory
  37. )
  38.  
  39. end = time.time()
  40. print('Finished reading request: time=%s' % (end - start))
  41. print('Form: %s' % form)
  42. print('Files: %s' % files)
  43.  
  44. return Response(status=200)
  45.  
  46. app.run('0.0.0.0', 5001)
  47.  
  48.  
  49. if __name__ == '__main__':
  50. main()
Add Comment
Please, Sign In to add comment