Ich bin Anfänger im Angular. Ich möchte wissen, wie man einen Angular 5- Datei-Upload-Teil erstellt . Ich versuche, ein Tutorial oder Dokument zu finden, sehe aber nirgendwo etwas. Irgendeine Idee dafür? Und ich versuche ng4-Dateien, aber es funktioniert nicht für Angular 5
angular
typescript
core114
quelle
quelle
Choose File
Also willst du Drag & Drop oder einfaches BTN-Upload? Bdw in beiden Fällen u einfach mit FormDataAntworten:
Hier ist ein funktionierendes Beispiel für das Hochladen von Dateien auf die API:
Schritt 1: HTML-Vorlage (file-upload.component.html)
Definieren Sie ein einfaches Eingabe-Tag vom Typ
file
. Fügen Sie(change)
-event eine Funktion für die Auswahl von Dateien hinzu.Schritt 2: Upload-Behandlung in TypeScript (file-upload.component.ts)
Definieren Sie eine Standardvariable für die ausgewählte Datei.
Erstellen Sie eine Funktion, die Sie in
(change)
-event Ihres Dateieingabe-Tags verwenden:Wenn Sie die Auswahl mehrerer Dateien durchführen möchten, können Sie dieses Dateiarray durchlaufen.
Erstellen Sie nun eine Datei-Upload-Funktion, indem Sie file-upload.service aufrufen:
Schritt 3: Datei-Upload-Dienst (file-upload.service.ts)
Wenn Sie eine Datei über die POST-Methode hochladen, sollten Sie diese verwenden
FormData
, damit Sie der http-Anfrage eine Datei hinzufügen können.Das ist also ein sehr einfaches Arbeitsbeispiel, das ich jeden Tag in meiner Arbeit verwende.
quelle
const invFormData: FormData = new FormData(); invFormData.append('invoiceAttachment', invoiceAttachment, invoiceAttachment.name); invFormData.append('invoiceInfo', JSON.stringify(invoiceInfo));
Der Controller hat zwei entsprechende Parameter, aber ich musste den JSON im Controller analysieren. Mein Core 2-Controller würde das Modell im Parameter nicht automatisch erfassen. Mein ursprünglicher Entwurf war ein Modell mit einer Dateieigenschaft, aber ich konnte es nicht zum Laufen bringencreateContrat(fileToUpload: File, newContrat: Contrat): Observable<boolean> { let headers = new Headers(); const endpoint = Api.getUrl(Api.URLS.createContrat)); const formData: FormData =new FormData(); formData.append('fileKey', fileToUpload, FileToUpload.name); let body newContrat.gup(this.auth.getCurrentUser().token); return this.http .post(endpoint, formData, body) .map(() => { return true; }) }
Content-Disposition: form-data; name="fileKey"; filename="file.docx" Content-Type: application/octet-stream <file>
Auf diese Weise implementiere ich eine Upload-Datei in die Web-API im Projekt.
Ich teile für wen Sorge.
Schritt für Schritt
ASP.NET-Web-API
HTML-Formular
TS-Datei zur Verwendung der API
Service TS
quelle
Eine sehr einfache und schnellste Methode ist das Hochladen von ng2-Dateien .
Installieren Sie ng2-file-upload über npm.
npm i ng2-file-upload --save
Importieren Sie zunächst das Modul in Ihr Modul.
Markup:
In Ihrer Komponente ts:
Dies ist die einfachste Verwendung. Um alle Möglichkeiten zu kennen, siehe Demo
quelle
Ich verwende Angular 5.2.11. Ich mag die von Gregor Doroschenko bereitgestellte Lösung. Ich habe jedoch festgestellt, dass die hochgeladene Datei keine Bytes enthält. Ich musste eine kleine Änderung vornehmen, damit sie für mich funktioniert.
Die folgenden Zeilen (formData) haben bei mir nicht funktioniert.
https://github.com/amitrke/ngrke/blob/master/src/app/services/fileupload.service.ts
quelle
Ok, da dieser Thread zu den ersten Ergebnissen von Google gehört und für andere Nutzer, die dieselbe Frage haben, müssen Sie das Rad nicht erneut aktivieren, wie von trueboroda angegeben. Es gibt die ng2-Datei-Upload-Bibliothek, die diesen Prozess des Hochladens von a vereinfacht Datei mit Winkel 6 und 7 alles, was Sie tun müssen, ist:
Installieren Sie die neueste Angular CLI
Installieren Sie dann rx-compatible, um Kompatibilitätsprobleme zu lösen
Installieren Sie ng2-file-upload
Importieren Sie die FileSelectDirective-Direktive in Ihr Modul.
In Ihrer Komponente
Vorlage
Zum besseren Verständnis können Sie diesen Link überprüfen: So laden Sie eine Datei mit Angular 6/7 hoch
quelle
Persönlich mache ich dies mit ngx-material-file-input für das Front-End und Firebase für das Back-End. Genauer gesagt C lauter Speicher für Firebase für das Back-End in Kombination mit Cloud Firestore. Unten ein Beispiel, das die Datei auf nicht mehr als 20 MB beschränkt und nur bestimmte Dateierweiterungen akzeptiert. Ich verwende Cloud Firestore auch zum Speichern von Links zu den hochgeladenen Dateien, aber Sie können dies überspringen.
contact.component.html
contact.component.ts (Größenprüfteil)
contact.component.ts (Datei-Uploader-Teil)
Speicherregeln
quelle
toString()
Sieht gut aus , aber warum brauchen Sie bei der contactForm-Deklaration?toString()
ist nutzlos, habe meine antwort bearbeitet. Für diejenigen , die diesen Kommentar, am Ende lesen würdenfileUploader
in contact.component.ts hatte ich])].toString()})
. Jetzt ist es einfach :])]})
.Wir müssen einen Ordner "temp" im Laufwerk C erstellen, dann druckt dieser Code den Json in der Konsole und speichert die hochgeladene Datei im erstellten Ordner
quelle
Zunächst müssen Sie HttpClient in Ihrem Angular-Projekt einrichten.
Öffnen Sie die Datei src / app / app.module.ts, importieren Sie HttpClientModule und fügen Sie sie wie folgt zum Import-Array des Moduls hinzu:
Generieren Sie als Nächstes eine Komponente:
Generieren Sie als Nächstes einen Upload-Service:
Öffnen Sie als Nächstes die Datei src / app / upload.service.ts wie folgt:
Öffnen Sie als Nächstes die Datei src / app / home / home.component.ts und fügen Sie zunächst die folgenden Importe hinzu:
Definieren Sie als Nächstes die Variablen fileUpload und files und fügen Sie UploadService wie folgt ein:
Definieren Sie als Nächstes die Methode uploadFile ():
Definieren Sie als Nächstes die Methode uploadFiles (), mit der mehrere Bilddateien hochgeladen werden können:
Definieren Sie als Nächstes die onClick () -Methode:
Als Nächstes müssen wir die HTML-Vorlage unserer Benutzeroberfläche zum Hochladen von Bildern erstellen. Öffnen Sie die Datei src / app / home / home.component.html und fügen Sie den folgenden Inhalt hinzu:
Schauen Sie sich dieses Tutorial und diesen Beitrag an
quelle
Vollständiges Beispiel für das Hochladen von Dateien mit Angular und NodeJS (Express)
HTML Quelltext
TS-Komponentencode
Knoten Js Code
fileUpload API-Controller
Hochladen des Dienstes mit multer
quelle
Versuche dies
Installieren
Importieren
Html
quelle
In Angular 7/8/9
Quelle Link -
Verwenden des Bootstrap-Formulars
In der Komponentenklasse
quelle