Objectif: Voulez-vous télécharger un fichier PDF à partir du serveur en générant l'URL ci-dessous: http://localhost:4200/bookStore/secured/rest/books/14119Erreur interdite (type de contenu vide) | Bien que le téléchargement d'un fichier PDF à partir du serveur de Braise
L'URL est généré lorsque la ligne ci-dessous est exécuté dans les book.js dans les routes.
return this.store.findRecord('book', bookId);
Mais j'obtiens 403 erreur interdite. L'erreur dans les détails:
Error: Ember Data Request GET /bookStore/secured/rest/books/14119 returned a 403
Payload (Empty Content-Type)
Forbidden
at new AdapterError (-private.js:3170)
at Class.handleResponse (rest.js:594)
at ajaxError (rest.js:956)
at Class.hash.error (rest.js:623)
at fire (jquery.js:3317)
at Object.fireWith [as rejectWith] (jquery.js:3447)
at done (jquery.js:9274)
at XMLHttpRequest.<anonymous> (jquery.js:9514)
Dois-je définir le type de contenu comme 'application/pdf'? et si oui, alors s'il vous plaît suggérer comment le définir.
Ci-dessous est le code JS:
routes \ book.js
actions: {
pdfClick(bookId) {
return this.store.findRecord('book', bookId);
}
}
modèle
\ book.hbs
<button {{action "pdfClick" book.bookId}}>PDF</button>
Dans le côté serveur, le code qui reçoit et répond le la demande est la suivante:
@GET
@Path("/{bookId}")
@Produces("application/pdf")
public Response bookExport(@PathParam("bookId") long bookId) {
//Code
}
Selon le code du serveur, nous obtenons un fichier PDF du serveur. Ceci est testé avec succès avec PostMan.
Merci pour la réponse @TBieniek. Avec ce 'let url = this.store.adapterFor ('livre'). UrlForFindRecord (bookId, 'book');' J'ai obtenu l'URL souhaitée.Mais comment déclencher l'URL à partir du fichier hbs. Veuillez noter que: '' C'est ici que la fonction pdfClick est appelée et que l'URL est générée. Comment utiliser l'URL dans le hbs pour le déclencheur. Je essayé: ' PDF' & ' PDF' il va à la fonction mais ne déclenche pas l'URL après. –
soit vous générez le 'url' dans une propriété calculée et utilisez si comme ' ou vous utilisez 'document.location.assign (url);' dans l'action 'pdfClick' juste après vous avez généré l'URL – TBieniek