En un proyecto web js, quiero PUBLICAR un formulario con un esquema json complejo, y en el que se archivará algún campo.
¿Cómo lo hago?
Actualmente subo un archivo solo como este
const data = new FormData(); data.append('mimetype', file.type); data.append('filename', file.name); data.append('file', file); return this.httpClient.post(url, data)pero quiero que mi nuevo formulario se vea así:
var data ={username:"John doe", profilPhoto:{mimetype:..., filename:..., file: ...}, house:{ photo:{mimetype:..., filename:..., file: ...}, }, documents:[{mimetype:..., filename:..., file: ...}] }Como se sugiere en los comentarios, codifique su archivo en base64, luego decodifique en el backend y guárdelo como un blob. Otra opción sería usar FormData como lo hace. Para la matriz de objetos, puede usar JSON.stringify y luego JSON.parse en el backend.
addFile(data:any): Observable<any> { const postData=new FormData(); postData.append('username', data.username); postData.append('profilPhoto', data.profilePhotoFile); postData.append('house', data.houseFiles); postData.append('documents', JSON.stringify(data.documents); let API_URL = this.endpoint+`/add-file`; return this.http.post(API_URL, postData) }