Как получить загрузку файла из Angular Reactive Form? - PullRequest
1 голос
/ 22 марта 2019

У меня есть модуль для загрузки файла в Angular 7 Reactive Forms (мне нужна реактивная форма, потому что мне нужно загружать файлы и некоторую другую информацию вместе)

Я следую этой статье: https://medium.com/@amcdnl/file-uploads-with-angular-reactive-forms-960fd0b34cb5

следующий код: https://pastebin.com/qsbPiJEX

onFileChange(event) {
    const reader = new FileReader();

    if(event.target.files && event.target.files.length) {
      const [file] = event.target.files;
      reader.readAsDataURL(file);

      reader.onload = () => {
        this.formGroup.patchValue({
          file: reader.result
       });

        // need to run CD since file load runs outside of zone
        this.cd.markForCheck();
      };
    }
}

насколько я знаю, я получу файл в виде текста внутри данных json. Но я понятия не имею, как получить это в виде файла или преобразовать данные JSON в файл. Файл может быть изображения, PDF или другие документы (Excel, документы или другие форматы)

Я использую Dotnet Core 2.2 и Angular 7 Есть идеи, как получить файл?

Ответы [ 2 ]

1 голос
/ 22 марта 2019

У меня есть форма, в которой я хочу опубликовать изображение через formData, я получил fileobject в моем FormControl, просто поместив этот атрибут writeFile="true".Это может записать объект FileList в вашем FormControl как значение.Для этого вам необходимо установить пакет '@ rxweb / реактивный-форма-валидаторы' и зарегистрировать модуль 'RxReactiveFormsModule'.Вот и все.

вот мой HTML-код:

<form  [formGroup]="userFormGroup">       

        <label>Profile Photo</label>
        <input type="file" [writeFile]="true" formControlName="profilePhoto" multiple />        

      <button [disabled]="!userFormGroup.valid" class="btn btn-primary">Submit</button>
    </form>

Пожалуйста, обратитесь к этому примеру: Stackblitz

0 голосов
/ 22 марта 2019

мы отправляем файл в теле запроса, чтобы мы могли получить файл в запросе, используя приведенный ниже код.Таким образом, мы можем получить доступ к файлу в нашем запросе, используя следующий код

using System.IO;  
var filelocation = Path.GetTempFileName();
foreach (var FileData in Request.Form.Files)  
{ 
 if (FileData.Length > 0)  
  {  
    using (var inputStream = new FileStream(filelocation , FileMode.Create))  
    { 

          // read file to stream  
            await FileData.CopyToAsync(inputStream);  
             // stream to byte array  
              byte[] array = new byte[inputStream.Length];  
               inputStream.Seek(0, SeekOrigin.Begin);  

                inputStream.Read(array, 0, array.Length);  
     // get file name  
     string fName = formFile.FileName;  
  }  

}
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...