Soy un principiante con Angular, quiero saber cómo crear la parte de carga de Angular 5 File , estoy tratando de encontrar algún tutorial o documento, pero no veo nada en ningún lado. ¿Alguna idea para esto? Y probé archivos ng4 pero no funciona para Angular 5
angular
typescript
core114
fuente
fuente
Choose File
cargar btn? Bdw en ambos casos, simplemente carga usando FormDataRespuestas:
Aquí hay un ejemplo de trabajo para cargar archivos a la API:
Paso 1: Plantilla HTML (file-upload.component.html)
Definir etiqueta de entrada simple de tipo
file
. Agregue una función al(change)
evento para manejar la elección de archivos.Paso 2: Carga de manejo en TypeScript (file-upload.component.ts)
Defina una variable predeterminada para el archivo seleccionado.
Cree la función que usa en el
(change)
evento de su etiqueta de entrada de archivo:Si desea manejar la selección de múltiples archivos, puede iterar a través de esta matriz de archivos.
Ahora cree la función de carga de archivos llamándole file-upload.service:
Paso 3: Servicio de carga de archivos (file-upload.service.ts)
Al cargar un archivo a través del método POST, debe usarlo
FormData
, ya que puede agregar un archivo a la solicitud http.Entonces, este es un ejemplo de trabajo muy simple, que uso todos los días en mi trabajo.
fuente
const invFormData: FormData = new FormData(); invFormData.append('invoiceAttachment', invoiceAttachment, invoiceAttachment.name); invFormData.append('invoiceInfo', JSON.stringify(invoiceInfo));
el controlador tiene dos parámetros correspondientes, pero tuve que analizar el JSON en el controlador. Mi controlador Core 2 no recogería automáticamente el modelo en el parámetro. Mi diseño original era un modelo con una propiedad de archivo, pero no pude hacerlo funcionarcreateContrat(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>
De esta manera, implemento el archivo de carga a la API web en el proyecto.
Comparto por quien se preocupe.
Paso a paso
API web ASP.NET
Formulario HTML
Archivo TS para usar API
Servicio TS
fuente
El método más fácil y rápido es usar ng2-file-upload .
Instale ng2-file-upload a través de npm.
npm i ng2-file-upload --save
Al primer módulo de importación en su módulo.
Margen:
En tus commponentes ts:
Es el uso más simple de esto. Para conocer todo el poder de esto ver demo
fuente
Estoy usando Angular 5.2.11, me gusta la solución proporcionada por Gregor Doroschenko, sin embargo, noté que el archivo cargado es de cero bytes, tuve que hacer un pequeño cambio para que funcione para mí.
Las siguientes líneas (formData) no funcionaron para mí.
https://github.com/amitrke/ngrke/blob/master/src/app/services/fileupload.service.ts
fuente
Ok, como este hilo aparece entre los primeros resultados de google y para otros usuarios que tienen la misma pregunta, no tienes que volver a activar la rueda como lo señala trueboroda, existe la biblioteca ng2-file-upload que simplifica este proceso de carga de un archivo con angular 6 y 7 todo lo que necesita hacer es:
Instale la última CLI angular
Luego instale rx-compat por problemas de compatibilidad
Instalar ng2-file-upload
Importar Directiva Directa FileSelect en su módulo.
En su componente
Modelo
Para una mejor comprensión, puede consultar este enlace: Cómo cargar un archivo con Angular 6/7
fuente
Personalmente, estoy haciendo esto usando ngx-material-file-input para el front-end y Firebase para el back-end. Más precisamente, C loud Storage para Firebase para el back-end combinado con Cloud Firestore. Debajo de un ejemplo, que limita que el archivo no sea mayor de 20 MB, y acepta solo ciertas extensiones de archivo. También estoy usando Cloud Firestore para almacenar enlaces a los archivos cargados, pero puede omitir esto.
contact.component.html
contact.component.ts (parte del validador de tamaño)
contact.component.ts (parte del cargador de archivos)
almacenamiento.reglas
fuente
toString()
la declaración contactForm?toString()
es inútil, editó mi respuesta. Para aquellos que lea este comentario, al finalfileUploader
de contact.component.ts tuve])].toString()})
. Ahora es simplemente:])]})
.Tenemos que crear una carpeta "temp" en la unidad C, luego este código imprimirá el Json en la consola y guardará el archivo cargado en la carpeta creada
fuente
Primero, necesita configurar HttpClient en su proyecto Angular.
Abra el archivo src / app / app.module.ts, importe HttpClientModule y agréguelo a la matriz de importaciones del módulo de la siguiente manera:
A continuación, genere un componente:
A continuación, genere un servicio de carga:
A continuación, abra el archivo src / app / upload.service.ts de la siguiente manera:
Luego, abra el archivo src / app / home / home.component.ts y comience agregando las siguientes importaciones:
A continuación, defina las variables fileUpload y files e inyecte UploadService de la siguiente manera:
A continuación, defina el método uploadFile ():
A continuación, defina el método uploadFiles () que puede usarse para cargar múltiples archivos de imagen:
A continuación, defina el método onClick ():
A continuación, debemos crear la plantilla HTML de nuestra interfaz de usuario de carga de imágenes. Abra el archivo src / app / home / home.component.html y agregue el siguiente contenido:
Mira este tutorial y esta publicación
fuente
Ejemplo completo de carga de archivos usando Angular y nodejs (express)
código HTML
Código de componente TS
Código de nodo Js
controlador de API fileUpload
Subir servicio usando multer
fuente
Prueba esto
Instalar en pc
Importar
HTML
fuente
En angular 7/8/9
Enlace fuente
Usando el formulario Bootstrap
En clase de componente
fuente