DOCX/XLSX-Dateien zu Nextcloud hochladen
Hallo liebe Ninoxer,
ich komme bei folgender Aufgabenstellung nicht weiter. Ich möchte Dateien (im Format pdf, docx, xlsx) in einen Nextcloud-Ordner aus einem "Ninox Bild-Feld" 'Datei hochladen' per Button hochladen. Das klappt sehr gut bei einer PDF-Datei mit dem nachfolgenden Script. Bei DOCX, XLSX wird die Datei zwar nach Nextcloud hochgeladen, ist aber keine "Office-konforme" Datei mehr, lässt sich in MS-Word/ Excel nicht öffnen.
Button-Script:
let me := this;
let nr := number(Nr);
" --- Stammdaten Nextcloud Webdav Verbindung --- ";
let auth := (select Nextcloud).'NC-Auth-Token';
" --- nur den Dateinamen extrahieren --- ";
let fileName := extractx(text('Datei hochladen'), "\/([^\/?#]+)[^\/]*$", "$1");
" --- Zeitstempel an Datei anhängen, Leerzeichen und Sonderzeichnen ersetzen > eineindeutiger Dateiname ---";
let uniqueFileName := "TEST_" + format(now(), "YYYYMMDDhhmmssSSS") + "_" +
replace(fileName, "[^A-Za-z0-9._-]", "_");
" --- URL umwandeln ---";
let url_encode := urlEncode(uniqueFileName);
" --- Datei in NC hochladen --- ";
let url := (select Nextcloud).'Nextcloud-Link' + "/" + url_encode;
var fileName := extractx(url, "\/([^\/?#]+)[^\/]*$", "$1");
var base64url := do as server
http("PUT", url, {
Authorization: "Basic " + auth,
'content-type': "application/octet-stream",
'nx-file': "base64url"
}, {}, ['Datei hochladen'])
end;
" --- Fehlerbehandlung NC-Upload ---";
let response := parseJSON(text(base64url)).result;
if contains(text(response), "error") then
alert("
Upload fehlgeschlagen: " + response)
else
" --- Upload Vorschau löschen --- ";
removeFile('Datei hochladen');
'Datei hochladen' := null
end
else
alert("Eine Datei muss für den Upload vorhanden sein.")
end
Meine Vermutung ist, dass bei der Übertragung in die NC die Codierung der Office-Dateien das Problem ist. Ninox "baut" die Base64-Codierung in die Quelldatei ein, die damit unbrauchbar wird.
Ich habe stundenlang viele verschiedene Varianten getestet, bisher leider ohne Erfolg (MIME-Codierung, Ninox sharefile-Link...).
Beim Upload einer simplen TXT-Datei (text/plain) wird diese Datei in den NC-Ordner übertragen, enthält aber den folgenden Inhalt. Der eigentliche "Nutzinhalt" der TXT-Datei befindet sich in Zeile 5.
----------------------------051569312810525461898543
Content-Disposition: form-data; name="0"; filename="TEXT_TEST.txt"
Content-Type: text/plain
TXT_Test ewkrby gljhwb vkjb v,jhbsd jvhb
----------------------------051569312810525461898543-- (empty)
Auch in die hochgeladenen PDF-Dateien wird dieser Header bzw. Footer "eingeklöppelt". Die gängigen PDF-Reader bzw. Browser sind hier aber tolerant und zeigen die PDF trotzdem an.
Habt ihr weitere Tipps für mich? Was mache ich falsch?
Vielen Dank vorab und viele Grüße
Henrik
Antwort
Content aside
- gesternZuletzt aktiv
- 25Ansichten
-
2
Folge bereits
