Frappe Framework
Réponses
Frappe construit la réponse HTTP selon un type. Pour un téléchargement, on renseigne le nom, le contenu et l’affichage inline ou en pièce jointe.
Qui construit la réponse
build_response, dans frappe.utils.response, choisit le rendu selon le type de contenu. La source la situe après le routeur. Si frappe.local.response contient une clé docs vide, cette clé est retirée. Le type lu est frappe.response.type, ou l’argument response_type.
| Type | Fonction |
|---|---|
csv | as_csv |
txt | as_txt |
download | as_raw |
json | as_json |
pdf | as_pdf |
page | as_page |
redirect | redirect |
binary | as_binary |
Téléchargement
En v13, as_raw crée une Response. Le type MIME vient de content_type, sinon d’une estimation à partir du nom de fichier, sinon application/unknown. L’en-tête Content-Disposition vaut display_content_as ou, à défaut, attachment, suivi du nom de fichier dont les espaces deviennent des soulignés. Le corps est filecontent.
inline demande au navigateur d’afficher le contenu dans la page. attachment demande de l’enregistrer.
Point d’entrée
@frappe.whitelist()
def download(name):
file = frappe.get_doc("File", name)
frappe.response.filename = file.file_name
frappe.response.filecontent = file.get_content()
frappe.response.type = "download"
frappe.response.display_content_as = "attachment"Point d’attention
Sans display_content_as, le navigateur reçoit attachment. Le type doit être l’une des huit clés : la fonction indexe le dictionnaire sans valeur de repli visible dans l’extrait.
