Preskoči na glavno vsebino

Content-Type pri prílohách vkladaných cez API

Aký Content-Type pri prílohe uviesť a čo server odmietne

Avtor: Petr Pech

Prílohu vkladanú cez API sprevádza hlavička Content-Type, ktorá určuje typ súboru. Server na jej obsah kladie dve podmienky — a skoršie obmedzenie na 50 znakov medzi nimi už neplatí, takže dlhé typy formátov Office možno uvádzať v plnom tvare.


Pravidlá pre hodnotu

Pravidlo

Čo sa stane pri nesplnení

Hodnota musí mať tvar typ/podtyp, teda obsahovať lomku.

Hodnota bez lomky skončí chybou 500 a príloha sa neuloží.

Hodnota môže mať najviac 127 znakov.

Od 128 znakov skončí požiadavka chybou 500 (chyba pri práci s databázou).

Hlavičku nie je nutné uvádzať.

Príloha sa uloží s typom content/unknown.

Uložená hodnota sa vracia v hlavičke Content-Type, keď si prílohu stiahnete adresou /prilohy/{ID}/content — na jej správnom vyplnení teda záleží, aby súbor otvorila správna aplikácia.


Typy pre kancelárske formáty

Štandardné typy súborov Office sa do 127 znakov bez problémov zmestia (najdlhší z nich má 73 znakov):

Súbor

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

🚨 Skrátené tvary ako vnd.ms-word.document.macroEnabled.12, ktoré sa kedysi odporúčali ako obídenie limitu 50 znakov, dnes skončia chybou 500 — chýba im lomka. Navyše označujú iný formát (súbory s makrami). Používajte preto plný tvar s predponou application/; ak potrebujete typ pre makro-formát, je to application/vnd.ms-word.document.macroEnabled.12.


Súvisiace

Ste s tem dobili odgovor na svoje vprašanje?