2017-12-18 20 views
1

私のdjangoバックエンドにテキストファイルをアップロードしようとしていますが、request.FILESは常に空です。リクエストを取得できません。ファイルdjango

私はファイルを送信するためにAxiosを使用しており、要求のコンテンツタイプとして 'multipart/form-data'を持つdjangoの要件に従っています。

私には何が欠けていますか?

------ WebKitFormBoundarymAnl54hGVTifZzwMのコンテンツディスポジション:ネットワーク要求ペイロードで

new Vue({ 
    el: '#app', 
    data: { 
     reqtype: '', 
     uploadedFile: '', 
    }, 
    methods: { 
     onSubmit(event) { 
      this.submitLoading = true; 
      if (! this.validateForm(this)) { 
       event.preventDefault(); 
       this.submitLoading = false; 
       return; 
      } 
      var formData = new FormData(); 
      formData.append("reqtype", this.reqtype) 
      formData.append('fileToUpload', this.uploadedFile) 
      axios.post('/sreqtool/tc/', formData, { 
       headers: { 
        'Content-Type': 'multipart/form-data' 
       } 
      }) 
     }, 
     onFileChange(e) { 
      var files = e.target.files || e.dataTransfer.files; 
      if (!files.length) 
       return; 

      var reader = new FileReader(); 
      var vm = this; 

      reader.onload = (e) => { 
       vm.uploadedFile = e.target.result; 
      }; 

      reader.readAsDataURL(files[0]); 
     } 
    }, 
} 

:私は経由でPOSTリクエストを送る私のapp.jsで

フォームデータ;名前= "REQTYPE"

をファイルベース------ WebKitFormBoundarymAnl54hGVTifZzwMのコンテンツディスポジション:フォームデータ;名前= "fileToUpload"

データ:text/plainで、私のviews.pyでbase64で、OTA1NTIzMzg2NQ0KOTE3NTAwMTU0Mg0KOTc3NDczNjcyNg0KMTIzNTQ2ODQ1Ng == ------ WebKitFormBoundarymAnl54hGVTifZzwM--

は私が持っている:

@csrf_exempt 
def index(request): 
    if request.method == 'POST': 
     DLOG.info(request.POST) 
     DLOG.info(request.FILES) 
     form = ExtractForm(request.POST, request.FILES) 

     if form.is_valid(): 
      res = QueryManager.processRequest(request.user, form.cleaned_data) 

DLOGは私のロガーで、dlogの出力は次のとおりです。

[2017-12-18 16:51:06,510] INFO views index: <QueryDict: {u'fileToUpload': [u'data:text/plain;base64,OTA1NTIzMzg2NQ0KOTE3NTAwMTU0Mg0KOTc3NDczNjcyNg0KMT 
IzNTQ2ODQ1Ng=='], u'reqtype': [u'filebased']}> 
[2017-12-18 16:51:06,512] INFO views index: <MultiValueDict: {}> 
+2

JSの機能は何ですか?すなわち 'これは何ですか?おそらく 'this.uploadedFile.files [0]'のようなinput要素から実際のファイルを取得する必要があります。 –

+0

vueオブジェクトのその部分。 vueのインスタンス化を組み込むようにコードスニペットを更新しました。 –

+1

base64イメージを保存しようとしています。これを読んでください:https://stackoverflow.com/questions/39576174/save-base64-image-in-django-file-field – Farrukh

答えて

0

base64にエンコードされた画像

{u'fileToUpload': [u'data:text/plain;base64,OTA1NTIzMzg2NQ0KOTE3NTAwMT... 
0

私は今、ファイルの内容を読むことができます。

@csrf_exempt 
def index(request): 
    if request.method == 'POST': 
     form = ExtractForm(request.POST, request.FILES) 
    if form.is_valid(): 
     res = QueryManager.processRequest(request.user, form.cleaned_data) 
     format, imgstr = data.split(';base64,') 
     ext = format.split('/')[-1] 
     data = ContentFile(base64.b64decode(imgstr), name='temp.' + ext) 
     filetext = data.read() 

FILETEXTが、私は、ファイルから必要な文字列が含まれています

は私が stackoverflow answer

コードに更新されてFarrukhさんのコメントからのリンクを使用していました。

関連する問題