Portál AbcLinuxu, 9. května 2025 23:22

Dotaz: jak servírovat soubory

9.6.2007 17:52 PMD
jak servírovat soubory
Přečteno: 246×
Odpovědět | Admin
Ahoj, píšu jednoduchou stránku v cherrypy, která dynamicky generuje data. Ta data bych potřeboval uložit - jak přinutím browser, aby otevřel dialogové okno "save as" a uložil data z paměti jako soubor, aniž bych musel vytvářet dočasný soubor na serveru?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.6.2007 18:10 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: jak servírovat soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pošlete je s mime typem application/octet-stream. Tj. přidejte k odpovědi HTTP hlavičku
Content-Type: application/octet-stream
9.6.2007 18:17 PMD
Rozbalit Rozbalit vše Re: jak servírovat soubory
Dík moc, ale moc dobře se v tomhle oboru neorientuju. Mohl bys prosím napsat úryvek kódu, nebo mě jinak nasměrovat?
9.6.2007 18:30 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: jak servírovat soubory
Nějaké příklady jsem našel v dokumentaci – Downloading files. Akorát tam místo application/octet-stream používají application/x-download, což je sice nestandardní mime typ, ale prohlížeč ho nejspíš taky nabídne k uložení. Víc k vám tomu asi neporadím, protože o CherryPy slyším prvně v životě…
9.6.2007 18:33 PMD
Rozbalit Rozbalit vše Re: jak servírovat soubory
Dík, snad se tím nějak prokoušu:)
9.6.2007 19:29 PMD
Rozbalit Rozbalit vše Re: jak servírovat soubory
Hmm, tak stačí do handleru připsat toto:
 cherrypy.tools.response_headers.callable([('Content-Type', 'application/octet-stream')]) 
Ale nevím, jak nastavit jméno ukládaného souboru (nastaví se jako jméno funkce page handleru). Nějaký nápad?
9.6.2007 19:54 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: jak servírovat soubory
Přidejte ještě hlavičku Content-disposition: attachment; filename=jmeno_souboru.
cherrypy.tools.response_headers.callable([('Content-disposition', 'attachment; filename=jmeno_souboru')])
attachement znamená, že je to příloha a prohlížeč se to většinou pokusí otevřít externě (což ale u mime typu application/octet-stream udělá tak jako tak). Druhá možnost je inline, která říká, aby se to prohlížeč pokusil zobrazit přímo ve svém okně nebo v HTML stránce.
9.6.2007 20:02 PMD
Rozbalit Rozbalit vše Re: jak servírovat soubory
Dík moc.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.