2017-05-03 14 views
0

私は、サーバー上にファイルをアップロードするためのdjangoでアプリケーションを開発しています。djangoを使ってファイルをアップロードする

from django import forms 

class DocumentForm(forms.Form): 
    docfile = forms.FileField(
     label='' 
    ) 

とmodels.pyで:私のHTMLファイル内

from django.db import models 

# Create your models here. 

    class Document(models.Model): 
     docfile = models.FileField(upload_to='targetdir') 

と私、私は別に以下のような形とforms.pyとmodels.pyファイル中のモデル(それぞれ)を定義しています形式は次のとおりです。

<form class="myclass" action="submit" method="post"> 
    {% csrf_token %} 

    <p> 
       {{ form.docfile.errors }} 
       {{ form.docfile }} 
</p> 


     <br /> 
      <input font-size="50px" style="zoom:1.5" class="myclass" dir="rtl" type="submit" value="upload" id="button" class="top-menu" onclick="pythonhandler()" /> 

今、私は自分のフォームを送信し、私はコード以下を介してサーバ上のアップロードしたファイルを受信したい時はいつでも、私は

」です
raise MultiValueDictKeyError(repr(key)) 
MultiValueDictKeyError: "'docfile'"" 

エラー。私のviews.pyファイル:

def pythonhandler(request): 

    if request.method == 'POST': 
     try: 
        data = request.FILES.get('docfile') 
        with open(os.getcwd()+'/mydirectory/'+request.FILES['docfile'].name, 'wb+') as destination: 
         for chunk in request.FILES['docfile'].chunks(): 
          destination.write(chunk) 

私はthisthisthis問題のような工程をしましたが、私は再びこのエラーを受け取りました!

+1

あなたがについてより具体的にすることができますしてくださいあなたのhtmlフォームとviews.py? あなたはこれを読んだか:https://docs.djangoproject.com/en/1.11/topics/http/file-uploads/?たぶん有用かもしれません。 –

+0

私は自分の質問を編集しました。私はあなたの言及されたリンクを読みました、そして、私はそれがその例のようなものだと思います。しかし私はそのエラーについて全く知らない。 – Stateless

+1

request.FILESには、要求メソッドがPOSTであり、要求を送信した

に属性enctype = "multipart/form-data"が含まれている場合にのみ、データが含まれることに注意してください。あなたのフォームタグでそれを見逃します –

答えて

0

HTMLファイルのフォームタグにenctype = "multipart/form-data"コマンドがありません。そのため、HTMLファイル内の私の形態は、怒鳴るようにする必要があります

<form class="myclass" action="submit" enctype="multipart/form-data" method="post"> 
    {% csrf_token %} 

    <p> 
       {{ form.docfile.errors }} 
       {{ form.docfile }} 
</p> 
      <input type="submit" value="upload" id="button" class="top-menu" onclick="pythonhandler()" /> 
1
ビュー機能で

def pythonhandler(request): 
data = DocumentForm(request.POST, request.FILES) 

とHTMLファイル内

<form class="myclass" action="submit" enctype="multipart/form-data" method="post"> 
    {% csrf_token %} 

    <p> 
       {{ form.docfile.errors }} 
       {{ form.docfile }} 
</p> 
      <input type="submit" value="upload" id="button" class="top-menu" onclick="pythonhandler()" /> 
+0

問題は、フォームのenctype =" multipart/form-data "属性によるものです。表示機能は正常です。 – Stateless

+0

jsutは小さな方法を与えました。 – Exprator

関連する問題