2017-08-14 4 views

Répondre

0

Dans le service

public importMassUpdateExcel(file: FormData, id): Observable<any> { const headers = new Headers({ 'Authorization': '',//authorization token 'Content-Type': 'application/json; charset=UTF-8'// }); const options = new RequestOptions({ headers: headers }); return this.http .post(url, file, options) .map() .catch(); }

1

Voici un exemple, que j'utilise pour télécharger des fichiers dans l'API via FormData.

Dans votre fichier de service comme upload.service.ts vous devez créer une fonction pour télécharger des fichiers via la méthode POST. Voici un exemple pour cette fonction:

getUploadHeaders() { 
    let headers = new Headers({'Accept': 'application/json'}); 
    headers.delete('Content-Type'); 
    return headers; 
}  

addNewPost(newPost: FormData): Observable<FormData> { 
    const endpoint = 'https://yourApiUrl.com'; 
    return this.http 
     .post(endpoint, newPost, { headers: this.getUploadHeaders() }) 
     .catch((e) => this.handleError(e)); 
} 

Et maintenant, vous devez créer la fonction de téléchargement dans votre composant, par exemple upload.component.ts. Voici un exemple de fonction de téléchargement avec FormData.

fileToUpload: File = null; 

constructor(private uploadService: UploadService) { } 

handleFileInput(files: FileList) { 
    this.fileToUpload = files.item(0); 
} 


saveFileToApi() { 
    const saveForm: FormData = new FormData();  
    if (this.fileToUpload) { 
    saveForm.append('fileFieldNameOnYourApi', this.fileToUpload, this.fileToUpload.name); 
    } 

    this.uploadService.addNewPost(saveForm).subscribe(() => { 
    console.log('Upload success!'); 
    }, error => { 
    console.log('Upload failed!'); 
    }); 
} 

Pour télécharger un fichier via FormData vous avez besoin 3 paramètres: propertyName sur critère d'évaluation de l'API, le fichier et le nom de ce fichier. Et dans votre upload.component.html vous devez avoir la forme comme celui-ci:

<form (ngSubmit)="onSubmit()">  
    <label for="fileField">Chose file to upload</label> 
    <input type="file" 
      id="fileField" 
      name="fileField" 
      (change)="handleFileInput($event.target.files)"> 
    <button type="submit">Speichern</button> 
</form> 

Pour plus de détails sur FormData lire this et pour lire plus d'informations sur FormData.append().

+0

Merci Gregor Vous Doroschenko. Votre réponse a aidé à comprendre, mais si essayer cette méthode, je reçois l'en-tête «Access-Control-Allow-Origin» qui est présent sur la ressource demandée. cette erreur et l'erreur de disque ainsi j'ai réalisé en recréant l'autorisation et le type de contenu. –