2013-04-13 58 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 /目錄中,出於某種原因(我不知道它),在我的設置中這個目錄是隻讀的,根目錄是????更改權限,那麼一切順利

相關問題