Загружайте файлы с угловых с веб-API - PullRequest
0 голосов
/ 30 марта 2019

Я пытался получить и загрузить файлы с устройства с помощью Руководство по изображениям Ionic 4 (захват, сохранение и загрузка с POST) .

Эта статья полезна и помогаетменя много. Но я застрял в конце, когда загрузить файл на сервер.

readFile ()

readFile(file: any) {
  const reader = new FileReader();    

  reader.onloadend = () => {
    const formData = new FormData()
    const imgBlob = new Blob([reader.result], {
        type: file.type
      });
      //console.log(imgBlob)   


     formData.append('studyMaterial', imgBlob, file.name);             
this._teacherv1service.Save_StudyMaterialFiles(1,'test',formData)

            };
            reader.readAsArrayBuffer(file);

          }

В этом методе файл читается как Blob и добавляется в formdataи затем перейдите к сервису.

Заголовок

headers_multipart: new HttpHeaders({
    //'Accept': 'application/json',
    'Content-Type': 'multipart/form-data',    
  }),

Вызов API

Save_StudyMaterialFiles(MasterRecordID:Number, PathBuilderVar: string,
file: FormData): Promise<any[]> {   
    let params = new HttpParams()      
    .set("MasterRecordID", String(MasterRecordID))    
    .set("PathBuilderVar", String(PathBuilderVar))       

    return this._http.post<any[]>(API_BASE_URL + 'TeacherV1/Save_StudyMaterialFiles', file,{ headers: headers_multipart,params:params})
    .pipe(retry(3))
    .toPromise();  

  }

Вызов метода с помощьюнекоторые параметры и заголовок, я также пытаюсь без заголовка, но не работает.

API

 [HttpPost]
        public IHttpActionResult Save_StudyMaterialFiles([FromUri]Int32 MasterRecordID, [FromUri] List<string> PathBuilderVar)
        {
  var httpRequest = HttpContext.Current.Request;

  foreach (string fileName in httpRequest.Files)//
            {

  }
}

Проблема

из метода readFile() я отправляю файл на сервер, но httpRequest.Files всегда равен нулю, но он работает с веб-интерфейсом, где я загружаю файл с ** input type = "file" **.

Пожалуйста, помогите мне решить эту проблему.

...