#angular #image #upload
#angular #изображение #загрузка
Вопрос:
Я совсем новичок в javascript и Typescript. Мне действительно нужна помощь с этим. Я использую Angular 10 и Spring Boot. У меня есть интерфейс, подобный этому:
export interface Product {
productId?: number;
sku: string;
name: string;
description: string;
unitPrice: number;
productImage: Int8Array;
active: boolean;
unitsInStock: number;
dateTimeCreated: Date;
dateTimeUpdated: Date;
}
И я использую форму, управляемую шаблоном Angular, для заполнения некоторых полей. Я хочу отправить изображение в этом объекте в поле ProductImage: Int8Array. Таков план.
HTML выглядит следующим образом (плюс входные данные для других полей):
<input type="file" accept="image/*"
(change)="onFileChange($event)">
и класс:
image:File;
public onFileChange(event) {
this.image = event.target.files[0];
}
итак, как я могу изменить image: File на ProductImage: Int8Array? Или, может быть, мне следует отправить его другим способом?
Ответ №1:
посмотрим, поможет ли это HTML
<div class="row" style="padding:0em; margin-top: 3vh;">
<ng-container>
<input type="file" accept=".mp4,.mkv"id="file" multiple (change)="getFileDetails($event)">
<button class="btn btn-primary" (click)="uploadFiles()">Upload Video</button>
</ng-container>
TS
myFiles=[]
getFileDetails(e) {
//console.log (e.target.files);
this.myFiles=[]
for (var i = 0; i < e.target.files.length; i ) {
this.myFiles.push(e.target.files[i]);
}
}
uploadFiles()
{
const frmData = new FormData();
//you can enter other form fields here
for (var i = 0; i < this.myFiles.length; i ) {
console.log(this.myFiles[i])
frmData.append("Upload", this.myFiles[i]);
}
this.http.post('http://localhost:3000/', frmData,{responseType: 'text',reportProgress:true,observe:'events' })
}
Комментарии:
1. Эй, это не принесет никакой пользы. e.цель. Файлы. длина = 1. И, в конце концов, во frmData у меня есть тот же объект, что и в начале.