Я пытался получить и загрузить файлы с устройства с помощью Руководство по изображениям 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" **.
Пожалуйста, помогите мне решить эту проблему.