2010-04-14 73 views
3

我有一个Django应用程序接受上传jQuery uploadify,一个jQ插件,使用Flash来上传文件和进度条。Django上传失败的请求数据读取错误

文件大约在150K下工作,但更大的文件总是失败,几乎总是在大约192K(即3个块)完成,有时在160K左右。我得到的例外如下。

exceptions.IOError 
request data read error 
File "/usr/lib/python2.4/site-packages/django/core/handlers/wsgi.py", line 171, in _get_post 
    self._load_post_and_files() 
File "/usr/lib/python2.4/site-packages/django/core/handlers/wsgi.py", line 137, in _load_post_and_files 
    self._post, self._files = self.parse_file_upload(self.META,  self.environ[\'wsgi.input\']) 
File "/usr/lib/python2.4/site-packages/django/http/__init__.py", line 124, in parse_file_upload 
    return parser.parse() 
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 192, in parse 
    for chunk in field_stream: 
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 314, in next 
    output = self._producer.next() 
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 468, in next 
    for bytes in stream: 
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 314, in next 
    output = self._producer.next() 
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 375, in next 
    data = self.flo.read(self.chunk_size) 
File "/usr/lib/python2.4/site-packages/django/http/multipartparser.py", line 405, in read 
    return self._file.read(num_bytes) 

当在Django开发服务器上本地运行时,大文件正常工作。
我试过设置我的FILE_UPLOAD_HANDLERS = ("django.core.files.uploadhandler.TemporaryFileUploadHandler",)以防它是内存上传处理程序,但它没有区别。

有谁知道如何解决这个问题?

回答

1

的问题可能是:

  • 您的Internet连接(某些防火墙拦截较大的上载,只是尝试上传到一些其他的服务来测试)。
  • 您的浏览器上(尝试禁用闪光灯,看看是否能工作)
  • 您的Web服务器(可能是你的服务器禁止大量上载?)

所以......要多一点有用的,你必须给我们一些关于哪个部分是问题(应该相当容易测试)的信息,如果它是web服务器(我猜测)你运行的是什么样的web服务器,什么样的Python处理程序(mod_wsgi,mod_python,fastcgi等)。

+0

只是测试上传上ANOT大文件她的网站没有问题。 我正在运行python 2.4,django 1.1,mod_wsgi。 我现在试着在没有Flash上​​传器的情况下测试上传。 – Jake 2010-04-14 23:27:50

+0

我可以使用Django管理界面(普通窗体文件域)将其上传到同一服务器上的不同Django项目。因此,这可能是一个闪光或高调的问题,我不知道该从哪里开始工作。 – Jake 2010-04-14 23:43:16

+0

另一个更新,我创建了一个表单发布到与uploadify相同的地方,并且我得到了同样的错误。 所以...不是我的浏览器或互联网连接,而不是我的服务器,不上传。 我可以看到,在工程和不工作的项目之间的主要区别在于使用django管理界面上传到模型文件字段,而破损的文件只是将下载文件放到文件夹中。但是我的错误是读取错误。 – Jake 2010-04-15 00:27:01

2

这是MediaTemple常见的 - 我遇到这个问题,修复它,并以某种方式它再次被打破。它必须处理一些关于NFS锁定的问题,以及由django的存储模块使用的系统调用。

...(10分钟后)...

发现:

任何试图运行最新的1.1 SVN版本会注意到,上面的 修复,因为不再起作用 TemporaryFileUploaderHandler现在还使用 锁定代码。一种解决方法 直到MEDIATEMPLE和/或Django的开发者 想出解决办法是编辑 django.core.files.locks并更改 两次调用fcntl.lockf到 fcntl.flock

下面是相关的bug报告 人谁的兴趣: http://code.djangoproject.com/ticket/9400

http://osdir.com/ml/DjangoUsers/2009-06/msg01014.html - > https://forums.mediatemple.net/viewtopic.php?id=2514

相关问题