Worum es geht
Ein Datei-Modell änderst du mit PUT oder PATCH, wie jedes Modell. Ob dabei auch der Inhalt ausgetauscht wird, hängt an einer Frage: Liegt der Anfrage eine Datei bei, deren Name zum Datei-Objekt passt?
Die vier Fälle
name geändert? | passende Datei dabei? | Ergebnis |
|---|---|---|
| nein | nein | nur eigene Felder geändert; Inhalt, Größe, Typ bleiben |
| ja | nein | umbenannt; Inhalt, Größe und mimeType bleiben |
| nein | ja | Inhalt ersetzt; fileSize, mimeType, fileVersion neu |
| ja | ja | umbenannt und ersetzt; der Dateiteil muss den neuen Namen tragen |
Inhalt ersetzen
PATCH /api/rest/fileasset/update/f1…/upload
data: { "data": { "id": "f1…", "name": "Vertrag.pdf" },
"response": ["id", "name", "fileSize", "fileVersion"] }
files: Vertrag.pdf (neue Fassung){ "data": { "id": "f1…", "name": "Vertrag.pdf",
"fileSize": 51877, "fileVersion": 1790000123456 },
"meta": { "error": false } }Die fileId bleibt gleich, der neue Inhalt liegt am selben Platz. Was mit dem alten Inhalt passiert, entscheidet das Auditing des Modells:
- der alte Inhalt bleibt als Version erhalten
- über einen Rollback wieder herstellbar
- siehe Dateiversionen
- der alte Inhalt wird überschrieben
- über CDMS nicht wiederherstellbar
Nur umbenennen
PATCH /api/rest/fileasset/update/f1…
{ "data": { "id": "f1…", "name": "Rahmenvertrag 2026.pdf" },
"response": ["id", "name", "mimeType"] }{ "data": { "id": "f1…", "name": "Rahmenvertrag 2026.pdf",
"mimeType": "application/pdf" },
"meta": { "error": false } }Der Inhalt liegt unter der fileId, nicht unter dem Namen. Umbenennen ändert deshalb nur eine Spalte in der Datenbank. mimeType bleibt dabei, wie er beim letzten Upload bestimmt wurde, auch wenn die neue Endung etwas anderes nahelegt.
PUT und PATCH
Wann: PATCH /update/{id} oder /update/{id}/upload
Du schickst nur, was sich ändert. Ohne name im Patch gilt der gespeicherte Name, und eine Datei muss dann diesen Namen tragen. Mit neuem name muss die Datei den neuen Namen tragen.
Ergebnis: Für Dateien meist die beste Wahl: umbenennen, ersetzen oder beides, ohne die übrigen Felder zu kennen.
Wann: PUT /update/{id} oder /update/{id}/upload
Wie bei jedem PUT ersetzt du den ganzen Datensatz. Schicke deshalb name und alle eigenen Felder mit. Die Datei muss den name aus der Anfrage tragen. Ohne Datei bleibt der Inhalt.
Ergebnis: Siehe Ersetzen mit PUT.
Statt Multipart kannst du den neuen Inhalt auch als Base64 im Feld content schicken. Siehe Hochladen.
Gleichzeitig ersetzen
Zwei Anfragen, die gleichzeitig einen neuen Inhalt für denselben Datensatz hochladen, würden sich im Speicher gegenseitig überschreiben. Deshalb sperrt CDMS den Datensatz, bevor es den Inhalt schreibt. Die zweite Anfrage bekommt 409. Lies den Datensatz dann neu und lade erneut hoch. Siehe Gleichzeitige Änderungen.
Fallen
Wie es weitergeht
- Alte Stände: Dateiversionen
- Zurück auf einen alten Stand: Rollback bei Dateien
- Hochladen im Detail: Hochladen