Sé que esta es una pregunta muy general, pero no puedo cargar un archivo en Angular 2. He intentado
1) http://valor-software.com/ng2-file-upload/ y
2) http://ng2-uploader.com/home
...pero falló. ¿Alguien ha subido un archivo en Angular? ¿Qué método usaste? ¿Cómo hacerlo? Si se proporciona algún código de muestra o enlace de demostración, será realmente apreciado.
angular
file-upload
angular2-http
heman123
fuente
fuente
headers.append('enctype', 'multipart/form-data');
(usé 'enctype' para reemplazar 'Content-Type'). Tal vez depende del código del lado del servidor. (es decir, api)A partir de las respuestas anteriores, construyo esto con Angular 5.x
Solo llame
uploadFile(url, file).subscribe()
para activar una cargaÚselo así en su componente
fuente
let params = new HttpParams(); let headers = new HttpHeaders({ 'Authorization': 'Bearer ' + localStorage.getItem('accessToken'), }); const options = { headers: headers, params: params, reportProgress: true, };
Observable
yHttpEvent
podrían omitirse por completo si está de acuerdo con el uso de la inferencia de tipos para proporcionar el tipo de retorno de la funciónuploadFile()
!this.http.request()
ya devuelve un tipo deObservable<HttpEvent<{}>>
, por lo que si le da a la solicitud, llame a un tipo genérico (es decirthis.http.request<any>()
, toda la función simplemente funciona con los tipos correctos.)input type="file" (change)="addFiles($event)" style="display: none" #file multiple> <button mat-raised-button color="primary" (click)="selectFile($event)">Upload File </button>
Gracias a @Eswar. Este código funcionó perfectamente para mí. Quiero agregar ciertas cosas a la solución:
Estaba recibiendo un error:
java.io.IOException: RESTEASY007550: Unable to get boundary for multipart
Para resolver este error, debe eliminar el "Contenido-Tipo" "multipart / form-data". Resolvió mi problema.
fuente
multipart/form-data; boundary=---------------------------186035562730765173675680113
. Consulte también stackoverflow.com/a/29697774/1475331 y github.com/angular/angular/issues/11819 .java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found"
que es similar al tuyo, sin embargo, cuando elimino elContent-Type
encabezado, obtengo un 404 del backend. Estamos usando Spring y Angular 2. Cualquier ayuda apreciada.Dado que el código de muestra está un poco desactualizado, pensé en compartir un enfoque más reciente, utilizando Angular 4.3 y la nueva (er) API HttpClient, @ angular / common / http
fuente
En Angular 2+, es muy importante dejar vacío el Tipo de contenido . Si configura 'Content-Type' en 'multipart / form-data', la carga no funcionará.
upload.component.html
upload.component.ts
fuente
He utilizado la siguiente herramienta de cebado con éxito. No tengo skin en el juego con primeNg, solo paso mi sugerencia.
http://www.primefaces.org/primeng/#/fileupload
fuente
Esta solución simple funcionó para mí: file-upload.component.html
Y luego realice la carga en el componente directamente con XMLHttpRequest .
Si está utilizando dotnet core, el nombre del parámetro debe coincidir con el nombre del campo from. archivos en este caso:
Esta respuesta es un plagio de http://blog.teamtreehouse.com/uploading-files-ajax
Editar : después de cargar, debe borrar la carga del archivo para que el usuario pueda seleccionar un nuevo archivo. Y en lugar de usar XMLHttpRequest, tal vez sea mejor usar fetch:
https://github.com/yonexbat/cran/blob/master/cranangularclient/src/app/file-upload/file-upload.component.ts
fuente
Este es un tutorial útil. cómo cargar archivos usando ng2-file-upload y SIN ng2-file-upload.
Para mí me ayuda mucho.
Por el momento, el tutorial contiene un par de errores:
1- El cliente debe tener la misma URL de carga que un servidor, por lo que en la
app.component.ts
línea de cambioconst URL = 'http://localhost:8000/api/upload';
a
const URL = 'http://localhost:3000';
2- Respuesta de envío del servidor como 'texto / html', por lo que a
app.component.ts
cambioa
fuente
Para cargar una imagen con campos de formulario
En mi caso, necesitaba .NET Web Api en C #
fuente
Hoy me integraron el paquete ng2-file-upload a mi aplicación angular 6, fue bastante simple, encuentra el siguiente código de alto nivel.
importar el NG2-carga de archivos del módulo
app.module.ts
Componente ts importación de archivos FileUploader
app.component.ts
Componente HTML agregar etiqueta de archivo
app.component.html
Trabajando en línea stackblitz Link: https://ng2-file-upload-example.stackblitz.io
Ejemplo de código de Stackblitz: https://stackblitz.com/edit/ng2-file-upload-example
Enlace de documentación oficial https://valor-software.com/ng2-file-upload/
fuente
Intenta no configurar el
options
parámetrothis.http.post(${this.apiEndPoint}, formData)
y asegúrese de no configurarlo
globalHeaders
en su fábrica Http.fuente
En la forma más simple, el siguiente código funciona en Angular 6/7
Aquí está la implementación completa
fuente
jspdf y Angular 8
Genero un pdf y quiero cargar el pdf con la solicitud POST, así es como lo hago (para mayor claridad, elimino parte del código y la capa de servicio)
fuente
He subido el archivo usando la referencia. No se requiere ningún paquete para cargar el archivo de esta manera.
// código que se escribirá en el archivo .ts
}
// código que se escribirá en el archivo service.ts
}
// código que se escribirá en html
fuente