Загрузка файлов из Angular 8 в Python 3 - PullRequest
0 голосов
/ 04 августа 2020

В моем проекте Angular я пытаюсь загрузить файл PDF, используя Dropzone. Вот мой код HTML:

<div class="drop-zone" *ngIf="lstFiles?.length == 0">
    <label for="file-business" class="lbl-file">
    <span> Drop PDF(s) or <a class="drop-file-text">click here</a> to upload</span>
  </label>
    <input id="file-business" title="" class="input-file" (change)="handleFileInput($event,$event.target.files)" #filebusiness type="file" multiple />
</div>
<div class="drop-zone dropped-data overflow-scroll" *ngIf="lstFiles?.length > 0">

    <div *ngFor="let item of lstFiles;let i = index" class="card col-md-2 border-red">
        <i class="fa fa-trash delete-btn" (click)="deleteFile(i)"></i>
        <label *ngIf="item.size > 100000">{{item.name}}<br><span>{{    item.size / 1048576 |  number : '1.2-2' }} MB</span></label>
        <label *ngIf="item.size < 100000">{{item.name}}<br><span>{{    item.size / 1024 |  number : '1.2-2' }} KB</span></label>
    </div>

    <input id="file-business" title="" class="input-file2" (change)="handleFileInput($event, $event.target.files)" #filebusiness type="file" multiple />
</div>

<div class="col-md-6 offset-md-3 ">

    <div class="form-group ">
        <button class="btn btn-primary " (click)="onSubmit() ">Process</button>
    </div>
</div>

И это мой код файла ts, все файлы находятся в lstFiles переменной:

handleFileInput(event, files: FileList) {
    for (let i = 0; i < files.length; i++) {
      this.lstFiles.push(files[i]);
    }
    event.target.value = "";
}

, а вот функция onSubmit() :

  onSubmit() {
  
    this.loading = true;
    const fileToUpload = this.lstFiles[0];
    console.log(fileToUpload);
    const formData: FormData = new FormData();
    formData.append('file', fileToUpload, fileToUpload.name);

    this.http
      .post("http://127.0.0.1:8000/GetPDFAnalyzerResult/", formData, {
        reportProgress: true,
        observe: "events",
  })
  .subscribe((events) => {
      this.loading = false;
        if (events.type === HttpEventType.Response) {

          alert("SUCCESS !!");
        }
      });
  }

В этой функции я вижу правильные данные файла в консоли windows ..

File Detail

But in my API, that is in Python, I receive NOTHING.. I get empty FILES variable, empty POST variable, and no data in body

файл в формате python

Вот функция Python, сейчас просто проверить актуальную проблему:

def GetPDFAnalyzerResult(request):
print(request)

try:   
    try:
        print("Hello")
        fileObj = {}
        fileObj = request.FILES['file']
        print(fileObj)
        
    except Exception as ex:
        return JsonResponse(ex, safe=False)


#return JsonResponse({"selectedString":selectedString, "referencedString":referencedString})

except ValueError as vError:

    return JsonResponse(vError)

except Exception as ex:

    return JsonResponse(ex)

Я не знаю, в чем проблема, я сделал аналогичный работал раньше, и он работал там, но теперь я застрял с этим. Есть догадки, что я делаю неправильно?

...