2013-04-13 43 views
0

我是新来的Django,我正在学习如何处理上传文件Django的,我做了该文件同样的事情,但我的nginx的只是抛出错误,用FileField和nginx上传文件只是抛出错误?

这里是我的views.py:

@csrf_exempt 
def upload_view(request): 
    if request.method == 'POST': 
     form = UploadItemForm(request.POST, request.FILES) 
     if form.is_valid(): 
      return HttpResponse('successfully uploaded') 
     else: 
      return HttpResponse('upload failed') 
else: 
    if request.user.is_authenticated(): 
     form = UploadItemForm() 
     return render(request, 
      'design/upload.html', 
      {'form': form, 
      'username': request.user.username}) 
    else: 
     return HttpResponse("you have to login") 

model.py

class Item(models.Model): 
    name = models.CharField(max_length = 100) 
    description = models.TextField(max_length = 1000) 
    uploadfile = models.FileField() 

class UploadItemForm(ModelForm): 
    class Meta: 
     model = Item 

我的模板:

<form enctype="multipart/form-data" method="post" action="/design/"> 
{% csrf_token %} 
{{ form.as_p }} 

<input type="submit" value="upload" /> 
</form> 

如果我上传了一些基于文本的文件(大小是非常小的),一切都OK,上传等格式,或CSV文件较大时,代码失败的

form = UploadItemForm(request.POST, request.FILES) 

nginx的说

对不起,您正在寻找的页面当前不可用。请稍后再试 。

我使用nginx + uwsgi + django,所以它与uwsgi和nginx设置有关吗?

+0

难道他们不具有文档?我记得默认格式是text/plain,所以你需要为你的格式定义 – catherine

+0

我没有找到默认格式的文档,你能给我提示吗?我想,如果改变文件格式,将工作,因为CSV文件也没.... – CodingCat

+0

有可能在nginx的配置选项来控制它会接受,大概是为了防止有人上传大文件作为部分拒绝POST数据的最大大小服务攻击。查看nginx的文档。 – Aya

回答

0

啊,我解决了这个问题。原因不明。看起来,当请求大小超过某个阈值时,nginx会将数据放在client_body_temp /目录中,出于某种原因(我不知道它),在我的设置中这个目录是只读的,根目录是????更改权限,那么一切顺利

相关问题