Přeskočit na hlavní obsah

Content-Type u příloh vkládaných přes API

Jaký Content-Type u přílohy uvést a co server odmítne

Autor: Petr Pech

Přílohu vkládanou přes API doprovází hlavička Content-Type, která určuje typ souboru. Server na její obsah klade dvě podmínky — a dřívější omezení na 50 znaků mezi nimi už není, takže dlouhé typy formátů Office lze uvádět v plném tvaru.


Pravidla pro hodnotu

Pravidlo

Co se stane při nesplnění

Hodnota musí mít tvar typ/podtyp, tedy obsahovat lomítko.

Hodnota bez lomítka skončí chybou 500 a příloha se neuloží.

Hodnota může mít nejvýše 127 znaků.

Od 128 znaků skončí požadavek chybou 500 (chyba při práci s databází).

Hlavičku není nutné uvádět.

Příloha se uloží s typem content/unknown.

Uložená hodnota se vrací v hlavičce Content-Type, když si přílohu stáhnete adresou /prilohy/{ID}/content — na jejím správném vyplnění tedy záleží, aby soubor otevřela správná aplikace.


Typy pro kancelářské formáty

Standardní typy souborů Office se do 127 znaků bez problému vejdou (nejdelší z nich má 73 znaků):

Soubor

Content-Type

.docx

application/vnd.openxmlformats-officedocument.wordprocessingml.document

.dotx

application/vnd.openxmlformats-officedocument.wordprocessingml.template

.xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

.xltx

application/vnd.openxmlformats-officedocument.spreadsheetml.template

.pptx

application/vnd.openxmlformats-officedocument.presentationml.presentation

.ppsx

application/vnd.openxmlformats-officedocument.presentationml.slideshow

.potx

application/vnd.openxmlformats-officedocument.presentationml.template

.pdf

application/pdf

🚨 Zkrácené tvary jako vnd.ms-word.document.macroEnabled.12, které se dříve doporučovaly jako obejití limitu 50 znaků, dnes skončí chybou 500 — chybí jim lomítko. Navíc označují jiný formát (soubory s makry). Používejte proto plný tvar s předponou application/; pokud potřebujete typ pro makro-formát, je to application/vnd.ms-word.document.macroEnabled.12.


Související

Dostali jste odpověď na svou otázku?