我知道当我们上传到使用django的网络应用程序时,我们无法在服务器完全接收之前访问上传文件。
所以我的问题是,有没有办法检查/访问正在进行的上传文件的总字节数?
感谢
答案 0 :(得分:4)
您可以通过编写自己的Django上传处理程序来监控正在进行的上传。您需要做的只是子类django.core.files.uploadhandler.FileUploadHandler
并实现receive_data_chunk
和file_complete
方法。
Django的upload handler documentation为您提供所需的详细信息。
答案 1 :(得分:2)
这取决于您的服务器设置。如果你将Apache与mod_python一起使用,那么文件会在到达时流式传输到你的Django进程。但是如果你使用wsgi或fastcgi在web服务器后面运行Django,那么在django介入之前服务器将缓冲整个文件。那么上面给出的解决方案就不行了。
这是“按设计”,因为绑定等待文件上传的fastcgi进程将是一个很大的浪费。因此,您需要做的是使用服务器模块,例如http://redmine.lighttpd.net/wiki/1/Docs:ModUploadProgress用于Lighttpd,它在服务器上为您实现upload_progress视图。或者http://wiki.nginx.org/NginxHttpUploadProgressModule代表nginx。
答案 2 :(得分:1)
答案 3 :(得分:1)
刚刚找到apache的上传进度模块:
http://github.com/drogus/apache-upload-progress-module
我不知道的是它是如何(或是否)与django& mod_wsgi的。