Dateioperationen. Dateien werden immer über ihren Pfad beschrieben. Wenn nicht anders angegeben, sind
damit immer vollständige System-Pfade oder URLs gemeint. Unter Windows sind auch die sogenannten
UNC-Pfade (\\paul\paul\develop) erlaubt.
Folgende Ersetzungen werden automatisch durchgeführt :
\ als Pfadtrenner müssen in Strings verdoppelt werden.
strcpy (path, "\\\\paul\\paul\\develop\\");
Einschränkungen Mac:
Namen von Ordnern und Dateien dürfen aus historischen Gründen keinen Doppelpunkt (:) enthalten.
Unicode-Zeichen größer 0xFFFF in Pfaden (z.B. der Notenschlüssel 𝄞 mit dem Unicode 0x1D11E) werden nicht unterstützt.
static int file::size(char* path, int fork = 1)
Größe einer Datei oder eines Ordners.
Name | Typ | Default | Beschreibung |
Return | int | Größe der Datei oder des Ordner in Bytes 0 : Datei/Ordner nicht gefunden oder Fehler |
|
path | String oder char* | - | Vollständiger Pfad |
fork | int | 1 | Welcher Teil der Datei soll verwendet werden. Die Angabe hat nur unter Mac OS eine Bedeutung. 0 : alle 1 : nur Data fork 2 : nur Resource fork Bei Ordnern wird automatisch die Angabe 0 (all forks) verwendet. |
static int file::open(
char* path,
char* permission,
char* type = "TEXT",
char* creator = "CWIE")
Öffne eine Datei zum Lesen oder Schreiben. Geöffnete Dateien müssen in jedem Fall wieder geschlossen werden.
Name | Typ | Default | Beschreibung |
Return | int | Referenz auf die geöffnete Datei. Diese Referenz muss in den anderen
file-Aufrufen verwendet werden. -1 Fehler beim Öffnen |
|
path | String oder char* | - | Vollständiger Dateipfad der zu öffnenden Datei |
permission | String oder char* | - | Modus, in der die Datei geöffnet werden soll. Der String kann folgende
Angaben (in beliebiger Reihenfolge) enthalten r Lesen w Schreiben a Anfügen. Der Schreibmodus "w" wird automatisch gesetzt. |
type | String oder char* | "TEXT" | Wenn die Datei für Schreiben neu angelegt werden muss, kann hier der Dateityp angegeben werden. Die Angabe muss genau 4 Zeichen lang sein, z.B "TEXT". |
creator | String oder char* | "CWIE" | Wenn die Datei für Schreiben neu angelegt werden muss, kann hier die Kennung der Defaultapplikation angegeben werden, mit der die Datei geöffnet werden soll. Die Angabe muss genau 4 Zeichen lang sein, z.B "CWIE". |
Öffne eine Datei, lies ihren gesamten Inhalt und füge den Inhalt in das Dokument ein.
int main () { int fi = file::open ("/Users/paul/Desktop/CLOB Kopie.txt", "r"); char* str = alloc (1000000); char buf [512]; int len;
*str = 0; while ((len = file::read (fi, buf, 511)) > 0) { buf[len] = 0; strcat (str, buf); } file::close (fi);
textmodel::insert (str, 0, -1); release (str); }
static int file::create(
char* path,
int createPath = 0,
int isFolder = 0)
Anlegen einer Datei oder eines Ordners im Filesystem.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
createPath | int | - | Ordnerpfad ebenfalls anlegen? 0 : Nein, keine Ordner anlegen. Existiert ein Teil des Ordnerpfades nicht, erzeugt die Funktion in diesem Fall einen Fehler. 1 : Fehlende Ordner im Pfad automatisch anlegen. |
isFolder | int | - | Ist der gegebene Pfad ein Ordnerpfad? 0 : Nein, der letzte Teil des Pfades ist eine Datei 1 : Der gegebene Pfad ist ein Ordnerpfad. Erzeuge die vollständige Ordnerstruktur (unabhängig vom Wert von createPath). |
static int file::write(
int refNum,
char* buffer,
int buflen = 0)
Tipp: Ein netter Trick zum Schreiben von Textdateien ist auch die Verwendung von wlog mit einem nicht-leeren Pfadparamter.
Name | Typ | Default | Beschreibung |
Return | int | 0 Schreibfehler >0 Anzahl der geschriebenen Zeichen |
|
refNum | int | - | Dateireferenz. Die Referenz wird als Ergebnis von open geliefert. |
buffer | String oder char* | - | Füge diesen Text an die Datei an |
buflen | int | 0 | Anzahl der zu schreibenden Zeichen <=0 Stringlänge von buffer verwenden. Wenn buffer vom Typ char* ist, muss der übergebene Puffer ein gültiger C-String, also 0-terminiert sein! |
Schreibe mehrere Textstücke in eine Datei. Die Datei wird zu Anschauungszwecken jedesmal neu geöffnet. Das Beispiel verzichtet zum Zwecke der besseren Lesbarkeit auf das Abfangen von Fehlern. in einer richtigen Anwendung sollte geprüft werden, ob die Datei geöffnet werden konnte und ob das Schreiben jeweils erfolgreich war.
int main () { int fi; int len;
fi = file::open ("$DESKTOP/ttt.txt", "wa", "TEXT", "CWIE"); len = file::write (fi, "aaa\n"); file::close (fi);
fi = file::open ("$DESKTOP/ttt.txt", "wa", "TEXT", "CWIE"); len = file::write (fi, "bbb\n"); file::close (fi);
fi = file::open ("$DESKTOP/ttt.txt", "wa", "TEXT", "CWIE"); len = file::write( fi, "ccc\n"); file::close (fi);
return 0; }
Der Text des aktuellen Textmodelles wird base64-codiert in eine Datei geschrieben. Danach wird diese Datei wieder eingelesen. Original- und eingelesener Text sollten gleich sein. Achten Sie darauf, den Lesepuffer genügend groß zu machen oder in einer Schleife zu lesen und zu decodieren.
int main () { String str = string::alloc (); char * enc = 0; char * dec = 0; char buf [3001]; int fi = 0; int bytesRead = 0;
textmodel::gettext (str);
// Encode to file enc = encode_base64 (string::get (str));
fi = file::open ("$DESKTOP/txt.txt", "w"); file::write (fi, enc); file::close (fi);
// Decode from file fi = file::open ("$DESKTOP/txt.txt", "r"); bytesRead = file::read (fi, buf, 3000); file::close (fi); strch (buf, bytesRead, 0, 1); dec = decode_base64 (buf);
showmessage ("%s\n\n%s\n\n%d", enc, dec, strcmp (string::get (str), dec));
release (enc); release (dec);
return 0; }
Lies eine Binärdatei und schreibe das Ergebnis in eine andere Datei. (Bitte beachten Sie: Das Sktipt dient lediglich zur Demonstration, im Produktivfall würden Sie hier besser die Funktion file::duplicate verwenden!)
int main () { String str = string::alloc (); int fileRef; int fileSize;
// Read file fileRef = file::open("$DESKTOP/b1.jpg", "r"); fileSize = file::read_str (fileRef, str, 4); file::close (fileRef);
// Write read data to another file fileRef = file::open("$DESKTOP/b2.jpg", "w"); file::write (fileRef, string::data (str), fileSize); file::close (fileRef);
return 0; }
static int file::read(
int refNum,
char* buffer,
int maxlen)
Lesen aus einer Datei. Lese den Inhalt einer Datei. Das Ergebnis wird in einen char*-Puffer geschrieben.
Soll der Ergebniss-Puffer als String verwendet werden, muss der Puffer unbedingt 0-terminiert werden. Verwenden Sie dazu die Funktion strch.
Name | Typ | Default | Beschreibung |
Return | int | 0 Lesefehler oder Dateiende >0 Anzahl der gelesenen Zeichen |
|
refNum | int | - | Dateireferenz. Die Referenz wird als Ergebnis von open geliefert. |
buffer | char* | - | Reservierter Speicher für den gelesenen Dateiinhalt |
maxlen | int | - | Länge des Puffers. Damit auch Binärdaten gelesen werden können, wird in den Puffer keine abschließende 0 geschrieben. |
Der Text des aktuellen Textmodelles wird in eine base64-codiert in eine Datei geschrieben. Danach wird diese Datei wieder eingelesen. Original- und eingelesener Text sollten gleich sein. Achten Sie darauf, den Lesepuffer genügend groß zu machen oder in einer Schleife zu lesen und zu decodieren.
int main () { String str = string::alloc (); char * enc = 0; char * dec = 0; char buf [3001]; int fi = 0; int bytesRead = 0;
textmodel::gettext (str);
// Encode to file enc = encode_base64 (string::get (str));
fi = file::open ("$DESKTOP/txt.txt", "w"); file::write (fi, enc); file::close (fi);
// Decode from file fi = file::open ("$DESKTOP/txt.txt", "r"); bytesRead = file::read (fi, buf, 3000); file::close (fi); strch (buf, bytesRead, 0, 1); dec = decode_base64 (buf);
showmessage ("%s\n\n%s\n\n%d", enc, dec, strcmp (string::get (str), dec));
release (enc); release (dec);
return 0; }
Lies den Inhalt einer Textdatei und füge ihn in das aktuelle Textmodell ein.
int main () { char * path = "$DESKTOP/Tabelle_Platzhalter.txt"; int fsize; int fi = 0; char * txt = 0; char * buf = 0; int bytes = 0;
fsize = file::size (path); if (fsize > 0) { txt = alloc (fsize+1); buf = txt; fi = file::open (path, "r"); while (1) { bytes = file::read (fi, buf, 3000); if (!bytes) { strch (buf, 0, 0); // set the end of the string break; } buf += bytes; } file::close (fi); } else { txt = alloc (4096); sprintf (txt, "File not found '%s'", path); }
wlog ("", "### %d ###\n", strlen (txt, 1)); textmodel::replace (txt); release (txt);
return 0; }
static int file::read_str(
int refNum,
String result,
int encoding = 0)
Lese den Inhalt einer Datei als String. Das Ergebnis wird in eine allokierte String Variable geschrieben.
read_str ließt Dateiinhalte immer als Strings. Beim Versuch eine Binärdatei einzulesen, wird das Resultat ab der ersten 0 abgeschnitten.
Name | Typ | Default | Beschreibung |
Return | int | 0 Lesefehler oder Dateiende >0 Anzahl der gelesenen Zeichen Abhängig vom verwendeten Encoding und von 0-Bytes im Ergebnis kann diese Angabe anders als die Länge von buffer sein. Zur Verwendung von Ergebnissen mit 0-Bytes aus Binärdateien kann die Funktion string::data verwendet werden. |
|
refNum | int | - | Dateireferenz. Die Referenz wird als Ergebnis von open geliefert. |
buffer | String | - | Reservierter Speicher für den gelesenen Dateiinhalt |
encoding | int | 0 | In welcher Codierung liegt die Quelldatei vor? 0: Utf8 1: Systemzeichensatz 2: CP1252 3: Mac Roman 4: Binärdaten Das Ergebnis wird in diesem Fall nicht 0-terminiert! |
Lesen einer JavaScript-Datei als String und anschließendes Ausführen des Scriptes
int main() { String script = string::alloc(); String pathStr = string::alloc("C:/Temp/HelloWorld.jsx"); int exists = 0; int fileRef = 0;
exists = file::exists(pathStr);
if (exists != 0) { fileRef = file::open(pathStr, "r"); file::read_str(fileRef, script); file::close(fileRef); run_javascript(script); }
string::release(script); string::release(pathStr);
return 0; }
Lies eine Binärdatei und schreibe das Ergebnis in eine andere Datei. (Bitte beachten Sie: Das Sktipt dient lediglich zur Demonstration, im Produktivfall würden Sie hier besser die Funktion file::duplicate verwenden!)
int main () { String str = string::alloc (); int fileRef; int fileSize;
// Read file fileRef = file::open("$DESKTOP/b1.jpg", "r"); fileSize = file::read_str (fileRef, str, 4); file::close (fileRef);
// Write read data to another file fileRef = file::open("$DESKTOP/b2.jpg", "w"); file::write (fileRef, string::data (str), fileSize); file::close (fileRef);
return 0; }
static int file::close(int refNum)
Schließe eine Datei
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
refNum | int | - | Dateireferenz. Die Referenz wird als Ergebnis von open geliefert. |
static int file::download(
char* url,
char* path,
int replace_existing = 0,
...)
Lade eine Datei über einen URL. Die neu angelegte Datei oder der Ordner bekommen den Namen, der im Zielpfad angegeben ist. Während des Downloads wird kein Progress-Balken gezeigt. Für den Download werden Funkionen des jeweiligen Betriebssystemes verwendet.
Ab dem vierten Funktionsparameter kann eine beliebig lange Schlüssel-Werte-Liste mit Parametern für einen den Download angegeben werden. Ist die Liste nicht leer, wird der Download mit Hilfe von curl gemacht. Die folgende Tabelle enthält alle unterstützen curl-Optionen und den jeweils erwarteten Datentyp. Die Angabe der Schlüssel ist case insensitive. Falsche Datentypen können zum Absturz des Programmes führen. Der Datentyp Path ist ebenfalls ein String oder char* mit der Erweiterung, dass $ALIASSE am Pfadanfang automatisch ersetzt werden. Globale und Datenbank-Tags wie <folder> oder <sessionId> in den String- und Path-Werten werden automatisch durch ihre aktuellen Werte ersetzt. Die in der Spalte Listenwert mit ✗ markierten Einträge werden addiert, alle anderen Mehrfach-Definitionen überschreiben die vorherigen Definitionen. Eine Beschreibung der curl-Parameter finden Sie hier.
Mit shttps kann der sichere Download unabhängig von den Download-Optionen des Aufrufes erzwungen werden.
shttps://www.hi13.de/aaa.png
Bezeichner | Typ | Default | Listenwert |
Verwendete Standardeinstellungen | |||
"POSTREDIR" | int | 7 (CURL_REDIR_POST_ALL) | |
"FOLLOWLOCATION" | int | 1 | |
"FAILONERROR" | int | 1 | |
"USERAGENT" | Path | " " (blank) | |
"REDIR_PROTOCOLS" | int | -1 (CURLPROTO_ALL) | |
"AUTOREFERER" | int | 1 | |
"CONNECTTIMEOUT" | int | 3 | |
"SSL_VERIFYHOST" | int | 0 | |
"SSL_VERIFYPEER" | int | 0 | |
"SSL_SSLCERTTYPE" | String oder char* | "PEM" | |
"SSL_CAINFO" | String oder char* | NULL | |
Abkürzungen | |||
"-" oder "INSECURE" | int |
Dieser Parameter ist nützlich, um den curl-Download mit den Standardeinstellungen (siehe oben) zu aktivieren. Die Option muß die erste der Liste sein. Die Wertangabe wird ignoriert und sollte mit 0 angegeben werden (..., "-", 0, ...). Weitere Optionen dürfen folgen. |
|
"+" oder "SECURE" | int |
Download mit aktivierter Zertifikatsprüfung:
"SSL_VERIFYPEER", 1
Die Option muß die erste der Liste sein. Die Wertangabe wird ignoriert und sollte mit 0 angegeben werden (..., "+", 0, ...). Weitere Optionen dürfen folgen. Beachten Sie bitte, dass die aktuellen Benutzerzertifikate aus Performance-Gründen nur einmal bei der ersten Verwendung geladen werden! Spätere Änderungen an den Zertifikaten werden erst bei Neustart des Programmes regisrtiert. |
|
"NOP" | int | Setzen Sie diesen Wert, wenn Sie keine einzige CURL-Option benötigen, aber für den Download die Verwendung von CURL erzwingen wollen. | |
Zusatzeinstellungen | |||
"POSTREDIR" | int | ||
"ABSTRACT_UNIX_SOCKET" | String oder char* | ||
"ACCEPTTIMEOUT_MS" | int | ||
"ACCEPT_ENCODING" | String oder char* | ||
"ADDRESS_SCOPE" | int | ||
"APPEND" | int | ||
"AUTOREFERER" | int | ||
"CAINFO" | Path |
Pfad einer gültigen PEM-Datei. Das in der Datei enthaltene Zertifikat wird an die aktuelle Zertifikatsliste des Benutzers angefügt und die Option "SSL_VERIFYPEER" wird automatisch aktiviert. Existiert die Datei nicht, wird die Option ignoriert. Beachten Sie bitte, dass die aktuellen Benutzerzertifikate aus Performance-Gründen nur einmal bei der ersten Verwendung geladen werden! Spätere Änderungen an den Zertifikaten werden erst bei Neustart des Programmes regisrtiert. |
|
"CERTINFO" | int | ||
"CONNECTTIMEOUT" | int | ||
"CONNECTTIMEOUT_MS" | int | ||
"COOKIE" | String oder char* | ||
"COOKIEFILE" | Path | ||
"COPYPOSTFIELDS" | String oder char* | ||
"CRLF" | int | ||
"CRLFILE" | Path | ||
"CUSTOMREQUEST" | String oder char* | ||
"DEFAULT_PROTOCOL" | String oder char* | ||
"DIRLISTONLY" | int | ||
"DNS_CACHE_TIMEOUT" | int | ||
"DNS_INTERFACE" | String oder char* | ||
"DNS_LOCAL_IP4" | String oder char* | ||
"DNS_LOCAL_IP6" | String oder char* | ||
"DNS_SERVERS" | String oder char* | ||
"DNS_USE_GLOBAL_CACHE" | int | ||
"EGDSOCKET" | String oder char* | ||
"FILETIME" | int | ||
"FTPPORT" | String oder char* | ||
"FTPSSLAUTH" | int | ||
"FTP_ACCOUNT" | String oder char* | ||
"FTP_ALTERNATIVE_TO_USER" | String oder char* | ||
"FTP_CREATE_MISSING_DIRS" | int | ||
"FTP_FILEMETHOD" | int | ||
"FTP_RESPONSE_TIMEOUT" | int | ||
"FTP_SKIP_PASV_IP" | int | ||
"FTP_SSL_CCC" | int | ||
"FTP_USE_EPRT" | int | ||
"FTP_USE_EPSV" | int | ||
"FTP_USE_PRET" | int | ||
"GSSAPI_DELEGATION" | int | ||
"HEADER" | Path | ||
"HEADEROPT" | int | ||
"HTTP200ALIASES" | String oder char* | ✗ | |
"HTTPAUTH" | int | ||
"HTTPGET" | int | ||
"HTTPHEADER" | String oder char* | ✗ | |
"HTTPPROXYTUNNEL" | int | ||
"HTTP_CONTENT_DECODING" | int | ||
"HTTP_TRANSFER_DECODING" | int | ||
"HTTP_VERSION" | int | ||
"IGNORE_CONTENT_LENGTH" | int | ||
"INTERFACE" | String oder char* | ||
"IPRESOLVE" | int | ||
"ISSUERCERT" | Path | ||
"KEEP_SENDING_ON_ERROR" | int | ||
"KEYPASSWD" | String oder char* | ||
"KRBLEVEL" | String oder char* | ||
"LOCALPORT" | int | ||
"LOCALPORTRANGE" | int | ||
"LOGIN_OPTIONS" | String oder char* | ||
"LOW_SPEED_LIMIT" | int | ||
"LOW_SPEED_TIME" | int | ||
"MAIL_AUTH" | String oder char* | ||
"MAIL_FROM" | String oder char* | ||
"MAIL_RCPT" | String oder char* | ✗ | |
"MAXCONNECTS" | int | ||
"MAXFILESIZE" | int | ||
"MAXFILESIZE_LARGE" | int | ||
"MAXREDIRS" | int | ||
"MAX_RECV_SPEED_LARGE" | int | ||
"MAX_SEND_SPEED_LARGE" | int | ||
"NEW_DIRECTORY_PERMS" | int | ||
"NEW_FILE_PERMS" | int | ||
"NOBODY" | int | ||
"NOPROXY" | String oder char* | ||
"PASSWORD" | String oder char* | ||
"PATH_AS_IS" | int | ||
"PINNEDPUBLICKEY" | String oder char* | ||
"PIPEWAIT" | int | ||
"PORT" | int | ||
"PREQUOTE" | String oder char* | ✗ | |
"PRE_PROXY" | String oder char* | ||
"PROTOCOLS" | int | ||
"PROXY" | String oder char* | ||
"PROXYAUTH" | int | ||
"PROXYHEADER" | String oder char* | ✗ | |
"PROXYPASSWORD" | String oder char* | ||
"PROXYPORT" | int | ||
"PROXYTYPE" | int | ||
"PROXYUSERNAME" | String oder char* | ||
"PROXYUSERPWD" | String oder char* | ||
"PROXY_CAINFO" | Path | ||
"PROXY_CAPATH" | Path | ||
"PROXY_CRLFILE" | Path | ||
"PROXY_KEYPASSWD" | String oder char* | ||
"PROXY_SERVICE_NAME" | String oder char* | ||
"PROXY_SSLCERT" | String oder char* | ||
"PROXY_SSLCERTTYPE" | String oder char* | ||
"PROXY_SSLKEY" | Path | ||
"PROXY_SSLKEYTYPE" | String oder char* | ||
"PROXY_SSLVERSION" | int | ||
"PROXY_SSL_CIPHER_LIST" | String oder char* | ||
"PROXY_SSL_OPTIONS" | int | ||
"PROXY_TLSAUTH_PASSWORD" | String oder char* | ||
"PROXY_TLSAUTH_TYPE" | String oder char* | ||
"PROXY_TLSAUTH_USERNAME" | String oder char* | ||
"PROXY_TRANSFER_MODE" | int | ||
"PUT" | int | ||
"QUOTE" | String oder char* | ✗ | |
"RANDOM_FILE" | Path | ||
"REDIR_PROTOCOLS" | int | ||
"REFERER" | String oder char* | ||
"RESOLVE" | String oder char* | ✗ | |
"RESUME_FROM" | int | ||
"RESUME_FROM_LARGE" | int | ||
"RTSP_CLIENT_CSEQ" | int | ||
"RTSP_REQUEST" | int | ||
"RTSP_SERVER_CSEQ" | int | ||
"RTSP_SESSION_ID" | String oder char* | ||
"RTSP_STREAM_URI" | String oder char* | ||
"RTSP_TRANSPORT" | String oder char* | ||
"SERVICE_NAME" | String oder char* | ||
"SSH_AUTH_TYPES" | int | ||
"SSH_HOST_PUBLIC_KEY_MD5" | String oder char* | ||
"SSH_KNOWNHOSTS" | Path | ||
"SSH_PRIVATE_KEYFILE" | Path | ||
"SSH_PUBLIC_KEYFILE" | Path | ||
"SSLCERT" | String oder char* | ||
"SSLCERTTYPE" | String oder char* | ||
"SSLENGINE" | String oder char* | ||
"SSLENGINE_DEFAULT" | int | ||
"SSLKEY" | Path | ||
"SSLKEYTYPE" | String oder char* | ||
"SSLVERSION" | int | ||
"SSL_CIPHER_LIST" | String oder char* | ||
"SSL_ENABLE_ALPN" | int | ||
"SSL_ENABLE_NPN" | int | ||
"SSL_FALSESTART" | int | ||
"SSL_OPTIONS" | int | ||
"SSL_SESSIONID_CACHE" | int | ||
"SSL_VERIFYHOST" | int | ||
"SSL_VERIFYSTATUS" | int | ||
"SSL_VERIFYPEER" | int | ||
"SUPPRESS_CONNECT_HEADERS" | INT | ||
"TCP_FASTOPEN" | int | ||
"TCP_KEEPALIVE" | int | ||
"TCP_KEEPIDLE" | int | ||
"TCP_KEEPINTVL" | int | ||
"TCP_NODELAY" | int | ||
"TELNETOPTIONS" | String oder char* | ✗ | |
"TFTP_BLKSIZE" | int | ||
"TFTP_NO_OPTIONS" | int | ||
"TIMECONDITION" | int | ||
"TIMEOUT" | int | ||
"TIMEOUT_MS" | int | ||
"TIMEVALUE" | int | ||
"TLSAUTH_PASSWORD" | String oder char* | ||
"TLSAUTH_TYPE" | String oder char* | ||
"TLSAUTH_USERNAME" | String oder char* | ||
"TRANSFERTEXT" | int | ||
"TRANSFER_ENCODING" | int | ||
"UNIX_SOCKET_PATH" | String oder char* | ||
"UNRESTRICTED_AUTH" | int | ||
"USERNAME" | String oder char* | ||
"USERPWD" | String oder char* | ||
"USE_SSL" | int | ||
"WILDCARDMATCH" | int | ||
"XOAUTH2_BEARER" | String oder char* |
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
url | String oder char* | - | URL oder vollständiger Pfad zum Original |
path | String oder char* | - | Zielpfad inklusive Name |
replace_existing | int | 0 | Soll das Original überschrieben werden? 1 : Ja 0 : Nein |
... | siehe oben | leer | Schlüssel-Wert-Paare mit curl-Optionen |
Download der Datei index.html der Webseite www.hi13.de.
err_code = file::download ("http://www.hi13.de/index.htm", "your_path", 1);
Download der Datei index.html der Webseite www.hi13.de mit Hilfe von curl.
err_code = file::download ("http://www.hi13.de/index.htm", "your_path", 1, "-");
Download der Datei index.html der Webseite www.hi13.de mit Hilfe von curl und selbstsigniertem Zertifikat.
err_code = file::download ("http://www.hi13.de/index.htm", "your_path", 1, "SSL_VERIFYPEER", 1, "CAINFO", "$DESKTOP/my_certificat.pem", "COOKIE", "PubServSessID=<Unquoted_sessionId>");
Mit system::cmd können Sie den Aufruf von curl auch selbst machen. Beachten Sie aber bitte, dass das Programm curl in diesem Fall auf dem Zielrechner installiert sein muß. Hier finden Sie einen Download von curl.
int main () { char url [1024]; char fi [1024]; char cmd [2048];
strcpy (url, "https://enterprise.celum.net/cora/download?ticket=7d328316-1515-4595-8ff1-47311b6ca24b"); strcpy (fi, "\\Users\\paul\\Desktop\\aaa.txt");
strcpy (cmd, "C:\\Users\\paul\\AppData\\Local\\Apps\\cURL\\bin\\curl.exe --url "); strcat (cmd, url); strcat (cmd, " --output "); strcat (cmd, fi);
system::cmd (cmd , 1); return 0; }
static int file::download_webimages(
ItemRef docRef,
char* destpath,
StringList urls,
int flags = 0,
IDTypeList results = 0)
Paralleler Download einer Liste von Web-Bildern. Durch die parallele Bearbeitung wird der Download um ein Vielfaches schneller als das einzelne Laden der Bilder. Im Test wurden 60 Bilder statt in 30 Sekunden in nur 0,6 Sekunden geladen. Wenn Sie also z.B. vor einem Produktaufbau ermittlen können, welche Bilder dafür benötigt werden, können Sie den Aufbau ihrer Produkte mglw. deutlich beschleunigen.
Die Bilder werden in der gleichen Datei abgelegt, die auch für die Web-Bilder eines Dokumentes verwendet wird. Die in Web-Bildern unterstützten ////-Zusatzangaben zur Dateiablage werden dabei unterstützt.
Alternativ können die Bilder auch in eimem festgelegten Ordner abgelegt werden. Enthält die ////-Definition einen vollständigen Pfad, wird der gemeinsame Ordner ignoriert und das Bild an der in der URL definiereten Stelle abgelegt.
Wenn die URLs Passwörter enthalten, sollte die Option 'kNoHash' verwendet werden, da die Verschlüsselung der Passwörter bei jedem Aufruf unterschiedliche Ergebnisse liefert und dementsprechend der Hash-Code, der aus der verschlüsselten URL generiert wird, bei jedem Aufruf unterschiedliche Dateinamen erzeugt, auch wenn die URL sich nicht ändert.
Wenn diese Funktion verwendet wird, ist es sinnvoll, nachfolgende Aufrufe von frame::image mit dem Wert 16 (suppress checking header) im Parameter updateFlags zu machen.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode -1199 : Download abgebrochen 1294 : Neues ungesichertes Dokument ohne Dateipfad -43 : Mind. eine Datei konnte nicht geladen werden 3013 : Verbindungsfehler bei mindestens einer Datei sonst : HTTP-Fehlercode |
|
docRef | ItemRef | - | Dokument-Referenz 0 : Aktuelles Dokument |
destPath | String oder char* | - | Download-Ordner 0 oder "" : docRef verwenden sonst : Vollständiger Pfad des Download-Ordners. Existiert der Ordner nicht, wird er angelegt. Der Pfad darf mit einem definierten $-Alias beginnen. |
urls | StringList | - | Liste der Bild-URLs. Die URLs dürfen die üblichen ////-Angaben für Web-Bilder haben. |
flags | int | 0 | Zusatzangaben zum Download 0 : keine 1 : Progressbalken zeigen (nur InDesign®) |
results | IDTypeList | 0 | Ergebnisse der einzelnen Downloads 0 : Ergebnisse ignorieren sonst : Allokierte Liste für die Einzelergebnisse. Die Liste hat nach dem Ausführen der Funktion die gleiche Länge wie die Eingabeliste urls. idtype::id der Einträge enthält den Fehlercode des Downloads, idtype::stringid der Einträge enthält den vollständigen Pfad der Downloaddatei. Bei den Fehlern -1199 (Abbruch) und 1294 (kein Dokumentpfad) bleibt die Liste leer. |
int main () { StringList urls = stringlist::alloc (); IDTypeList results = idtypelist::alloc (); IDType res; int result;
stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w0MDAzfGltYWdlL2pwZWd8YUdFNEwyZzJaUzh4TXprNU56VTBOVFl4T1RRNE5nfDk1NWMyNDA4YTc1YmQxZTA5YmRiOGU1ZjNjMjMzNDhiZTJlYzFmODYwNDVlN2VlNGYwNTkwMTJmN2YzNDczMGY////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w0NzMxMHxpbWFnZS9qcGVnfGFERmxMMmhrTkM4eE1qSTJOVE13TkRNNU1UY3hNQXwyOGFjYmM2MGZlOTJhZDIyMDBmMzkxZDg5Nzc0OWQ0OWUxYmQ1ZmM5MTUzNDdkYjIzY2QwNzIwZTJjZDQ1MWY5////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w1MDA0NHxpbWFnZS9qcGVnfGFEbGpMMmhqWkM4eE16STJOakUzTVRrMU16RTRNZ3xlOWZiYzM1NDAyYWQ0ZDVlOTMzMDMwZjY3ZDRmNDA2YTBlZmRlNjFkYWY5NWZlOGIyNzZmZjA1NTA1OWI3YTll////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w1MDA0NHxpbWFnZS9qcGVnfGFHVTBMMmhsWmk4eE16STJOak14TXpnek9EWXlNZ3w3ZjJmY2QwN2JlMmRiNzkyYTU0YmY0MDdhNGI4ZjRiYjM3OWYzZjg1ZDY0YTdmYmQxZThmZmYyNWVlZWFhYjA0////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w1MDk5OXxpbWFnZS9qcGVnfGFHSmxMMmcxWkM4eE16azVOemc0T0RRd05UVXpOQXw3MmQ0ZDY5YWJiMzBkNjQ0NWVhNmYzODVkZTllYzI4OTcyYTNhNjg2YWZhYTBhNjA2MTM5MDAyZTYxNDc1NTUx////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w1MjUxMnxpbWFnZS9qcGVnfGFHUXpMMmhsWXk4eE16STJOak14TXprd05ERTFPQXwyNzMyZmMyNTBiMzQ1ZjI3MDM3M2E5NDU1MWYzOTkxODY3ZTc5YTliMGQ1ZTZiNjZmMjNlNmRjNmRkNDFjNGJj////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w1NjEyfGltYWdlL2pwZWd8YUdWbUwyZzBNQzh4TXprNU9EQTJORFV6TXpVek5BfDgxYjcwYjBiZmZhMGM5YjRiNmYzMTY2NTE1NjdjMWVjZWNjOTg5MTgxNjUwN2VlNGRiNmFkOTNkZmRhYWZmNzA////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2NDcwN3xpbWFnZS9qcGVnfGFEQTFMMmhoWmk4eE16STJOakUzTVRBMk9EUTBOZ3xkYjk2NjdiMzhmZDIyMDlhZTVmZmMwYzE3YTRhZTVmODU4MjI5NzI0YzM5MGMzMjhjMDk2ZWVkMmZkNTk1MmU0////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2NDcwN3xpbWFnZS9qcGVnfGFEZGpMMmhsWXk4eE16STJOak14TXprek5qa3lOZ3w1MzBiNDZmYzQwMzZhZDlkZjBkNTUzMmI3YTIzMjBiZjhmMTU1OTA5ZDg1NmMxMTg0N2QxYjQxODdkMzMwNmY5////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2ODg0fGltYWdlL2pwZWd8YVcxaFoyVnpMMmhtT0M5b016a3ZPVGczTkRReE1qRXdPVGcxTkM1cWNHY3w1ZmQxYTQwNGI5YzJiZjYzZDVjMzk1MDFhYWVjODU4OWQ2YWUwN2I0MzEwNjgxYjAxNmI0NDBmYmY5YWRlMzM1////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2OTE5OXxpbWFnZS9qcGVnfGFEWXdMMmhqTkM4eE16STJOakUyT1RRNU5UVTRNZ3xlOTQ4NTZhOGY4NzQwNjk1MmVkOGYzMTMxYWEzYjgzYjZjMGQ2NmM4MTZiYzZiMjFmYzllOWI0MmY1ZWRkYzY2////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2OTI3NHxpbWFnZS9qcGVnfGFHRmtMMmhqWmk4eE16Z3dNVGc0TlRjMk1UVTJOZ3xhMTkxMzVhZDI4YmMwN2ExNjM0NGIzOGFiNmUxZmYyMzNhNjhjNDNlMDFlYjBjYzZiYjdkNjgwMjI4YWU2Zjk4////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2OTYyfGltYWdlL2pwZWd8YURJNUwyZ3lZeTh4TXpnd01qYzBNelE1Tmpjek5BfDRjNTA4NDJkMmRhY2QxMTk0NTAwZjQ5NzdmMTI1ZGFiODMxYTNhM2NiM2ZmNmM1NTYxMjgyZmEzMTFkNWIyOTY////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w3MjM1fGltYWdlL2pwZWd8YURreUwyaGhOQzh4TXpjNU56azJOek0yTkRFeU5nfDU1MzJiYzRjYjg5Yzg0ZjljMjI5ODcyMDI4ZjdlMjQyMWRkMzZjZDJmOTVhM2Q5MzMyYTM3NGY1NTliZWM3ZTk////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w4OTg4fGltYWdlL2pwZWd8YURrekwyZ3daQzh4TXprNU9EUXlNVGt6TkRFeE1BfGNmOWE1NjQ0ZWU5MjIzNzQ3OGQ3ZWI4MTZkNGRmOTQ4MTE3MTZmYjFkMGZlZTI1MGJkYWYwZDI3ZmJiZTVlNDQ////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3wxMDUyMnxpbWFnZS9qcGVnfGFEbG1MMmhrTnk4eE16azVPVEEzTlRJNU5USTJNZ3wzNWVjMGNlZTZkN2I3N2E4YTc1OGM4ZTZkNjk1NjU3NmNhYWQyMTM2NzM3MGUyY2VlZmY3MzUzMmZkNmZjOTE3////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3wxMDY2NHxpbWFnZS9qcGVnfGFHUTJMMmd3TUM4eE16azVOemczT1RZMU5qUTNPQXxjZDY3ZTc4NmUxYmE4ZDdlMWZiY2IwMDkzNjI3MmUyYTQyNWYyZWNkYWJjZDAzMjY0YmY4NDQxZTljOGFiYjQ4////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3wxMjA3NHxpbWFnZS9qcGVnfGFEY3hMMmczWXk4eE16azVPRGN6T1RjMU1EazBNZ3wzMzk1MWEzODA5NzAxZjY4ODIyMmQ5NjFiYjIwODcyOWI4OWFkMmNhZjdjM2RhYjE4NjE0YzU4OTI4MDNkNzAx////kOnlyHash");
result = file::download_webimages (0, 0, urls, 1, results);
wlog ("", "download_webimages result %d %d\n", result, idtypelist::length (results)); for (res = idtypelist::first (results); res; res = idtypelist::next (results)) { wlog ("", "%d : '%s'\n", idtype::id (res), idtype::stringid (res)); } return 0; }
static int file::upload(
char* path,
char* url,
int replace_existing = 0)
[ab Version 3.2.2 R2370] Verschicke eine lokale Datei zu einer angegebenen URL. Wenn der Server eine Benutzkennung fordert, müssen Benutzername und Passwort in der URL angegeben werden. Name und Passwort werden in der Form benutzer:passwort@ direkt hinter ftp:// angegeben.
Hinweise
Beachten Sie bitte die folgenden Hinweise:
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
path | String oder char* | - | vollständiger Pfad der Datei, die versendet werden soll. |
url | String oder char* | - | URL oder vollständiger Pfad zum Original inklusive Namen. Beachten Sie bitte die oben angegebenen Hinweise! |
replace_existing | int | 0 | Wird nicht ausgewertet. Existierende Dateien im Zielsystem werden immer ersetzt. |
Lade die Datei index.html auf die Webseite www.hi13.de.
err_code = file::upload ("$DESKTOP/index.html", "ftp://benutzer:passwort@www.hi13.de/index.html");
static int file::launch(char* path)
Öffne eine Datei in ihrem Standardprogramm. Der Befehl wirkt wie Doppelklick der Datei im Finder/Explorer. Mit der Anweisung können auch URLs geöffnet werden (nur Mac). Bei der Angabe von URLs wird der URL im Standardbrowser angezeigt. URLs dürfen keine Kürzel wie $DESKTOP enthalten.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
path | String oder char* | - | Vollständiger Pfad der zu öffnenden Datei oder Ordner oder URL (nur Mac) |
öffne einen Verweis in die aktuelle Online-Doku.
int main () { char url[512];
strcpy (url, "file://"); strcat (url, file::uncurtain ("$COMET")); strcat (url, "/Doku_"); strcat (url, translate (0, "$LOCALE", 0)); strcat (url, "/InDesign/Plugins/w2plugins.html#Aktivierung");
file::launch (url);
return 0; }
static int file::exists(char* path)
Existiert die Datei/der Ordner?
Mit der Anweisung kann auch geprüft werden, ob ein Bild einer CC Library noch existiert oder gelöscht wurde. Bitte beachten Sie, dass die heruntergeladenen Bilddateien gelöschter CC Libraries-Bilder weiter physikalisch auf ihrem Rechner liegen können, auch wenn der entsprechende Eintrag bereits aus der Bibliothek gelöscht wurde. Die Funktion prüft deshalb den Status des CC Libraries Bildes, nicht die Existenz der geladenen Bilddatei!
Die CC Libraries werden von Adobe ständig weiterententwicklt. Leider gibt es keinerlei Schnittstelle für Javascript oder C++ dafür. Unsere Implementierung ist das Ergebnis eines deep diving in die XMLs und JSONs von CCLib und kann auf Annahmen beruhen, die sich seit der Einführung der Funktion im November 2020 geändert haben. Bitte haben Sie Verständnis dafür, dass wir die Funktion bis zur Einführung einer CCLib-Schnittstelle durch Adobe nicht weiterentwickeln.
Name | Typ | Default | Beschreibung |
Return | int | 0 Nein 1 Ja |
|
path | String oder char* | - | Vollständiger Pfad auf eine Datei oder einen Ordner. Der Pfad darf mit
einem der definierten Aliase beginnen. "CC Libraries: lib_name/image_name" : Prüfe, of das gegebene CC Libraries Bild (noch) gültig ist |
static int file::isfile(char* path)
Zeigt der angegebene Pfad auf eine Datei?
Name | Typ | Default | Beschreibung |
Return | int | 0 Nein 1 Ja |
|
path | String oder char* | - | Vollständiger Pfad auf eine Datei oder einen Ordner |
static int file::isfolder(char* path)
Zeigt der angegebene Pfad auf einen Ordner?
Name | Typ | Default | Beschreibung |
Return | int | 0 Nein 1 Ja |
|
path | String oder char* | - | Vollständiger Pfad auf eine Datei oder einen Ordner |
static int file::select_file(
char* outpath,
char* title = 0,
int askForNew = 0,
char* suggestion = 0)
Dateiauswahl über einen Dateidialog.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
outpath | String oder char* | - | Vollständiger Pfad auf die ausgewählte Datei |
title | String oder char* | 0 | Beschriftung des Dateiauswahldialoges |
askForNew | int | 0 | 1 : Erfrage eine existierende Datei 0 : Pfad einer neuen Datei oder eines Ordners erfragen |
suggestion | String oder char* | 0 | Namensvorschlag oder leer. Der Parameter wird nur ausgewertet, wenn askForNew == 1 ist. |
static int file::select_folder(char* outpath, char* title = 0)
Ordnerauswahl über einen Dateidialog.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
outpath | String oder char* | - | Vollständiger Pfad des ausgewählten Ordners |
title | String oder char* | 0 | Titel des Ordnerauswahl-Dialoges |
static char* file::name(char* result, char* path)
Die Funktion ermittelt den systemabhängigen letzten Teil des übergebenen Pfades. Unter Mac OS X ist der Pfadtrenner ein "/", unter Windows "\"
Name | Typ | Default | Beschreibung |
Return | String oder char* (Abhängig von Parameter result) | Der Parameter result wird als Ergebnis zurückgegeben. | |
result | String oder char* | - | Name der Datei. Wenn der Typ der Variable char* ist, muss für das Ergebnis genügend Speicher allokiert sein. |
path | String oder char* | - | Dateipfad. Die Datei muss nicht existieren. |
char name[256]; char path[4096];
if (file::select_folder (path, "Test") != 0) return 0; showmessage (file::name (name, path));
static char* file::shortname(char* result, char* path)
Ermittle den Namen einer Datei ohne Dateiendung. Die Funktion ermittelt den systemabhängigen letzten Teil des übergebenen Pfades und entfernt vom Ergebnis die Dateiendung. Unter Mac OS X ist der Pfadtrenner ein "/", unter Windows "\"
Name | Typ | Default | Beschreibung |
Return | String oder char* (Abhängig von Parameter result) | Der Parameter result wird als Ergebnis zurückgegeben. | |
result | String oder char* | - | Basisname der Datei. Wenn der Typ der Variable char* ist, muss für das Ergebnis genügend Speicher allokiert sein. |
path | String oder char* | - | Dateipfad. Die Datei muss nicht existieren. |
char name[256]; char path[4096];
if (file::select_folder (path, "Test") != 0) return 0; showmessage (file::shortname (name, path));
static char* file::extender(char* result, char* path)
Die Funktion ermittelt den systemabhängigen letzten Teil des übergebenen Pfades und von diesem die Dateiendung. Unter Mac OS X ist der Pfadtrenner ein "/", unter Windows "\"
Name | Typ | Default | Beschreibung |
Return | String oder char* (Abhängig von Parameter result) | Der Parameter result wird als Ergebnis zurückgegeben. | |
result | String oder char* | - | Endung der Datei. Wenn der Typ der Variable char* ist, muss für das Ergebnis genügend Speicher allokiert sein. |
path | String oder char* | - | Dateipfad. Die Datei muss nicht existieren. |
char name[256]; char path[4096];
if (file::select_folder (path, "Test") != 0) return 0; showmessage (file::extender (name, path));
static char* file::path(char* result, char* path)
Ermittle den Pfad einer Datei. Die Funktion ermittelt den systemabhängigen vorderen Teil des übergebenen Pfades. Unter Mac OS X ist der Pfadtrenner ein "/", unter Windows "\"
Name | Typ | Default | Beschreibung |
Return | String oder char* (Abhängig von Parameter result) | Der Parameter result wird als Ergebnis zurückgegeben. | |
result | String oder char* | - | Pfad der Datei. Wenn der Typ der Variable char* ist, muss für das Ergebnis genügend Speicher allokiert sein. |
path | String oder char* | - | Eingabe Dateipfad. Die Datei muss nicht existieren. |
char name[256]; char path[4096];
if (file::select_folder (path, "Test") != 0) return 0; showmessage (file::path (name, path));
static char* file::volume(char* result, char* path)
Ermittle den Laufwerksteil eines Dateipfades.
Name | Typ | Default | Beschreibung |
Return | String oder char* (Abhängig von Parameter result) | Der Parameter result wird als Ergebnis zurückgegeben. | |
result | String oder char* | - | Endung der Datei. Wenn der Typ der Variable char* ist, muss für das Ergebnis genügend Speicher allokiert sein. |
path | String oder char* | - | Dateipfad. Die Datei muss nicht existieren. |
char name[256]; char path[4096];
if (file::select_folder (path, "Test") != 0) return 0; showmessage (file::volume (name, path));
static int file::duplicate(
char* source,
char* destPath,
char* newName = 0,
int createPath = 1,
int overrideExisting = 0)
Dupliziere einen Ordner oder eine Datei. Wahlweise kann für das Ziel ein neuer Name angegeben werden. Zielpfade können generiert werden. Der Zielpfad darf nicht mit einem Pfadtrenner enden. Quell- und Ziellaufwerk müssen gemounted sein.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
source | String oder char* | - | Vollständiger Pfad auf eine Datei oder einen Ordner. |
destPath | String oder char* | - | Zielordner. Der Pfad darf nicht mit einem Pfadtrenner enden. |
newName | String oder char* | 0 | Neuer Name für die Kopie. Ist der Name leer, bekommt die Kopie den Namen des Originales. |
createPath | int | 1 | Soll der Zielpfad automatisch generiert werden? 0 : Zielpfad nicht generieren sonst : Zielpfad bei Bedarf anlegen |
overrideExisting | int | 0 | Existiert die Zieldatei, darf sie dann überschrieben werden? 0 : Nein, nicht überschreiben 1 : überschreiben. Ist das Ziel ein Ordner, hat der Parameter keine Wirkung. Ordner dürfen nicht implizit überschrieben werden. |
static int file::move(
char* source,
char* destPath,
int createPath = 1,
int overrideExisting = 0)
Verschiebe einen Ordner oder eine Datei. Beim Verschieben auf ein anderes Laufwerk kopiert der Befehl das Original automatisch. Wahlweise kann für das Ziel ein neuer Name angegeben werden. Zielpfade können generiert werden. Der Zielpfad darf nicht mit einem Pfadtrenner enden. Quell- und Ziellaufwerk müssen gemounted sein.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
source | String oder char* | - | Vollständiger Pfad auf eine Datei oder einen Ordner. |
destPath | String oder char* | - | Zielordner. Der Pfad darf nicht mit einem Pfadtrenner enden. |
createPath | int | 1 | Soll der Zielpfad automatisch generiert werden? 0 : Zielpfad nicht generieren sonst : Zielpfad bei Bedarf anlegen |
overrideExisting | int | 0 | Existiert die Zieldatei, darf sie dann überschrieben werden? 0 : Nein, nicht überschreiben 1 : überschreiben. Ist das Ziel ein Ordner, hat der Parameter keine Wirkung. Ordner dürfen nicht implizit überschrieben werden. |
static int file::remove(char* source)
Lösche eine Datei oder einen Ordner. Der Ordner muss nicht leer sein, passen Sie also auf. Das Löschen kann nicht rückgängig gemacht werden, die Objekte werden nicht in den Papierkorb verschoben, sondern wirklich gelöscht!
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
source | String oder char* | - | Vollständiger Pfad auf eine Datei oder einen Ordner. |
static int file::rename(char* source, char* newName)
Umbenennen eines Ordner oder einer Datei.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
source | String oder char* | - | Vollständiger Pfad auf eine Datei oder einen Ordner. |
newName | String oder char* | - | Neuer Name |
static int file::setdatafile(
char* newPath,
int id,
char* name = "",
int stage = 0,
int activeOnly = 0)
Ändere die Pfad-Definition einer Datendatei-Zuordnung. Wird der Eintrag in der Liste der Palette Einstellungen gezeigt, wird auch dieser Eintrag geändert. Dateipfade werden automatisch relativiert, wenn sich die Datei in den folgenden Ordern befindet:
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
newPath | String oder char* | - | Neuer Dateipfad/Dateiname, der dem Eintrag zugeordnet wird. Unvollständige Pfadangaben beziehen sich immer auf den aktuell gesetzten Datenordner. |
id | int | - | ID des Eintrages, der geändert werden soll 0 : Ignoriere die ID und verwende den Namen zur Identifikation des Eintrages. Die Aliasnamen der Zuordnungen müssen nicht eindeutig sein. |
name | String oder char* | 0 | Name des Eintrages Hat id einen Wert >0 wird die Angabe ignoriert. |
stage | int | 0 | Auf welcher Ebene soll die Pfaddefinition geändert werden? 0 : Global. Die Definition wird für alle Benutzer im Datenpool geändert. Die Änderung ist sofort wirksam. In PubServer-Verbindungen wird diese Option nicht unterstützt! 1 : Lokal. Die Definition wird lokal geändert und in der Palette 'Einstellungen' rot angezeigt. Im Datenpool bleibt der Eintrag unverändert. In PubServer-Verbindungen hat diese Option keine Wirkung! 2 : Temporär : Nur in Batch-Jobs definiert! Anlegen oder Ändern einer temporären Definition des gegebenen Aliasnamens. Die Angabe einer ID wird hier nicht unterstützt! Die Einträge werden nicht in der Palette Einstellungen gezeigt! Im Unterschied zu lokalen Änderungen ist diese Definition auch in PubServer-Verbindungen wirksam. Die Definition überdeckt Definitionen gleichen Namens des Datapools. Sie wird beim Trennen der Datenverbindung wieder entfernt. Die Definitionen $DESKTOP, ... dürfen mit der Funktion nicht geändert werden! Wird bei Illustrator ignoriert Reservierte Namen Die folgenden Variablennamen dürfen nicht verwendet werden:
|
activeOnly | int | 0 | Eintrag nur ändern, wenn er aktiv ist? Die Angabe ist insbesondere dann wichtig, wenn es
mehrere Einträge mit gleichem Alias-Namen gibt. 0 : Der gefundene Eintrag muss nicht aktiv sein. Bei Angabe eines Namens wird der erste passende Eintrag geändert. 1 : Der gefundene Eintrag muss aktiviert sein, damit er geändert werden kann. |
static char* file::getdatafile(
int id,
char* name = "",
int enabledOnly = 1,
int autoResolve = 1)
Hole den (relativen) Pfad einer Datendatei-Zuordnung.
Name | Typ | Default | Beschreibung |
Return | char* | (Relativer) Pfad des Datendatei-Aliasses.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
id | int | - | ID des Eintrages 0 : Ignoriere die ID und verwende den Namen zur Identifikation des Eintrages. Die Aliasnamen der Zuordnungen müssen nicht eindeutig sein. |
name | String oder char* | 0 | Name des Eintrages Hat id einen Wert >0 wird die Angabe ignoriert. |
enabledOnly | int | 1 | Suche nur nach aktivierten Eintgrägen 1 - Der gefundene Eintrag muss aktiviert sein. Wird kein aktivierter Eintrag gefunden, der die gesuchte Id oder den gesuchten Aliasnamen hat, ist das Ergebnis der Funktion der Leerstring. 0 - Der Pfad des ersten gefundenen Eintrages wird zurückgegeben. Es wird nicht getestet, ob dieser Eintrag aktiviert ist. |
autoResolve | int | 1 | Vollständigen Pfad für das Ergebnis bestimmen 0 - Der gefundene Pfad der ID des Aliasnamen wird unverändert zurückgegeben. 1 - Unvollständige Ergebnispfade werden relativ zum aktuellen XML-Datenordner berechnet. |
static int file::enable_datafile(
int state,
int id,
char* name = "")
Hole den Pfad einer Datendatei-Zuordnung.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
state | int | - | Neuer Status der Zuordnung. Wird eine Zuordnung aktiviert, werden
alle Zuordnungen mit gleichem Aliasnamen automatisch deaktiviert. 0 deaktivieren > 0 aktivieren |
id | int | - | ID des Eintrages 0 : Ignoriere die ID und verwende den Namen zur Identifikation des Eintrages. Die Aliasnamen der Zuordnungen müssen nicht eindeutig sein. |
name | String oder char* | 0 | Name des Eintrages Hat id einen Wert >0 wird die Angabe ignoriert. |
static int file::count(char* path)
Anzahl der Unterobjekte eines Ordners.
Name | Typ | Default | Beschreibung |
Return | int | Anzahl der Unterobjekte eines Ordners. 0 : Pfad nicht gefunden oder der Pfad zeigt nicht auf einen Ordner |
|
path | String oder char* | - | Vollständiger Ordnerpfad der auch mit $DESKTOP, ... beginnen darf. |
static char* file::get_nth(char* path, int n)
Hole das n-te Ojekt eines Ordners
Name | Typ | Default | Beschreibung |
Return | char* | Vollständiger Pfad auf den n-ten Objekt des Ordners
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
path | String oder char* | - | Vollständiger Ordnerpfad der auch mit $DESKTOP, ... beginnen darf. |
n | int | - | 0-basierter Objektindex |
Schreibe alle Unterordner und -dateien eines Ordners ins Logfile.
int dofile (char * path) { // Do anything with the file return 0; }
int wpath (char * path, int depth, int isfile) { int i; char name[256];
strcpy (name, file::name (name, path));
for (i = 0; i< depth; i++) wlog ("", "\t", depth); if (!isfile) wlog ("", "> "); wlog ("", "%s\n", name);
return 0; }
int isvisible (char * path) { char name [256];
strcpy (name, file::name (name, path)); return (name[0] != '.'); }
int dofolder (char* path, int depth) { int c = file::count (path); int n;
for (n = 0; n < c; n++) { char sub[4069]; strcpy (sub, file::get_nth (path, n)); if (isvisible (sub)) { wpath (sub, depth, !file::isfolder (sub)); if (file::isfile (sub)) dofile (sub); else dofolder (sub, depth+1); } }
return 0; }
int main () { dofolder ("$DESKTOP/test/Bächli Platzierung/Costa Rica", 0); return 0; }
static int file::wait(
char* path,
int time_ms,
int intervall = 10)
Test, ob eine Datei existiert mit bis zu time_ms Verzögerung
Name | Typ | Default | Beschreibung |
Return | bool | true, wenn die Datei existiert, false andernfalls | |
path | String oder char* | - | Vollständiger Pfad der Datei der auch mit $DESKTOP, ... beginnen darf. |
time_ms | int | - | Zeit in Millisekunden, die gewartet werden soll. |
intervall | int | 10 | Polling Intervall in Millisekunden |
Warte maximal 10 Minuten auf eine Datei.
int main () { int exists;
// Warte maximal 10 Minuten auf die Datei "Druckausgabe.pdf", teste jede Sekunde // exists = file::wait ("$DESKTOP/Druckausgabe.pdf", 600000, 1000); showmessage ("Druck %s", (exists ? "erfolgreich" : "fehlgeschlagen");
return 0; }
static char* file::uncurtain(char* path)
Ersetze einen (eventuellen) $-Alias am Beginn des Pfades durch seinen aktuellen Wert. Unterstützt werden neben den Standardaliassen auch alle in der Palette Einstellungen definierten und aktiven Aliasnamen für Dateien und Ordner.
Name | Typ | Default | Beschreibung |
Return | char* | Inhalt von path mit ersetztem $-Alias am Beginn des Pfades
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
path | String oder char* | - | Beliebiger Pfad. Der Eingabewert bleibt unverändert. |
static int file::zip(
char* srcPath,
char* zipPath = "",
int keepRsrc = 1,
int level = 9)
Verpacken einer Datei oder eines Ordners als ZIP-Archiv.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
srcPath | String oder char* | - | Vollständiger Pfad und Name des Objektes, das verpackt werden soll |
zipPath | String oder char* | "" | Zielpfad des Archives. Existiert der Zielornder nicht, wird er angelegt.
Existiert bereits ein Archiv, wird es überschrieben. 0 oder "" : Neben das Original mit der Endung .zip endet mit / : Archiv in diesem Ordner anlegen, als Name den Originalnamen plus die Endung .zip verwenden sonst : Archiv hier anlegen. Der Pfad sollte in diesem Fall mit .zip enden. |
keepRsrc | int | 1 | Resourcefork erhalten? Der Parameter wird unter Windows nicht berücksichtigt. Ab v4.1.7 R27138 wird der Parameter nicht mehr ausgewertet und immer die Einstellung 0 (--norsrc) verwendet. Hintergrund ist, dass mit Resourcedaten verpackte Archive von anderen Systemen nur dann zuverlässig entpackt werden kännen, wenn die Original-Datei auf einer mit Mac OS Extended oder Mac OS Journaled formatierten Festplatten-Partition liegt. Bei allen anderen Formatierungen (z.B. Mac OS AFS+, Mac OS AFPS, Windows, Linux) kann --rsrc zu Problemen beim Entpacken fähren. 0 : Resourcefork nicht mit ins Archiv (--norsrc) 1 : Resourcefork mit ins Archiv (--rsrc) |
level | int | 9 | Wie aufwendig soll komprimiert werden? Der Parameter wird unter Windows ignoriert. 0 : keine Kompression 9 : Optimale (aber langsamste) Kompression |
Verschiedene Archive erstellen.
int main () { // Datei-ZIP mit verschiedenen Angaben zum ZIP wlog ("", "zip 1 : %d\n", file::zip ("$DESKTOP/zipit/P 1.rtfd", "$DESKTOP/zipit/P 1.zip")); wlog ("", "zip 2 : %d\n", file::zip ("$DESKTOP/zipit/P 1.rtfd", "$DESKTOP/zipit/P 1/aaa/bbb/P 1.zip"));
wlog ("", "zip 3 : %d\n", file::zip ("$DESKTOP/zipit/P 2.rtfd", "")); wlog ("", "zip 4 : %d\n", file::zip ("$DESKTOP/zipit/P 2.rtfd", "$DESKTOP/zipit/P 2/aaa/bbb/"));
// Mac resources wlog ("", "zip 3 : %d\n", file::zip ("$DESKTOP/zipit/Resfile.rsrc", ""));
// Ordner-ZIP wlog ("", "zip 5 : %d\n", file::zip ("$DESKTOP/zipit/aaaäö 2", ""));
return 0; }
static int file::unzip(
char* zipPath,
char* destPath = "",
int keepRsrc = 1,
StringList resultList = 0,
int action = 2)
Auspacken eines Archives.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
zipPath | String oder char* | - | Vollständiger Pfad eines ZIP-Archives |
destPath | String oder char* | "" | Zielpfad, an dem entpackt werden soll. Existiert der Ordner nicht, wird er angelegt.
Enthält das Archiv Objekte, die im Zielordner schon existieren, werden diese Objekte überschrieben. 0 oder "" : Packe im Ordner des Archivs aus sonst : Zielpfad zum Entpacken |
keepRsrc | int | 1 | Resourcefork erhalten? Der Parameter wird unter Windows nicht berücksichtigt. Ab v4.1.7 R27138 wird der Parameter nicht mehr ausgewertet und immer die Einstellung 0 (--norsrc) verwendet. Hintergrund ist, dass mit Resourcedaten verpackte Archive von anderen Systemen nur dann zuverlässig entpackt werden kännen, wenn die Original-Datei auf einer mit Mac OS Extended oder Mac OS Journaled formatierten Festplatten-Partition liegt. Bei allen anderen Formatierungen (z.B. Mac OS AFS+, Mac OS AFPS, Windows, Linux) kann --rsrc zu Problemen beim Entpacken fähren. |
resultList | StringList | 0 | Allokierte Liste für den Inhalt des Archivs |
action | int | 2 | Was soll getan werden? 0 : Das Archiv wird nicht entpackt, aber die Liste resultList wird mit den Pfaden der Objekte der ersten Ebene des Archives gefüllt. Das sind die Objekte, die beim wirklichen Auspacken im Zielordner als direkte Untereinträge neu entstehen. Dateien, die mit einem Punkt oder __MACOSX beginnen werden nicht in die Liste aufgommen. 1 : Das Archiv wird nicht entpackt, aber die Liste resultList wird mit den Pfaden aller Objekte, die im Archiv enthalten sind, gefüllt. Dateien, die mit einem Punkt oder __MACOSX beginnen werden nicht in die Liste aufgommen. 2 : Das Archiv wird entpackt. . Die Liste resultList enthält die TopLevel-Einträge des Archives. |
int main () { StringList archi = stringlist::alloc (); char * str;
wlog ("", "Top level entries of Archive 2.zip\n"); file::unzip ("$DESKTOP/zipit/Archiv 2.zip", "", 1, archi, 0); for (str = stringlist::first (archi); str; str = stringlist::next (archi)) { wlog ("", "\t'%s'\n", str); }
wlog ("", "Entries of Archive 2.zip\n"); file::unzip ("$DESKTOP/zipit/Archiv 2.zip", "$DESKTOP/aaa", 1, archi, 1); for (str = stringlist::first (archi); str; str = stringlist::next (archi)) { wlog ("", "\t'%s'\n", str); }
file::unzip ("$DESKTOP/zipit/Archiv 2.zip", ""); file::unzip ("$DESKTOP/zipit/aaaäöääßäääß.zip", ""); file::unzip ("$DESKTOP/zipit/P 1.zip", "");
file::unzip ("$DESKTOP/zipit/Bild.jpg.zip", "", 1, archi); file::rename (stringlist::first (archi), "Bild 2 mit Resourcefork.jpg");
file::unzip ("$DESKTOP/zipit/Bild.jpg.zip", "", 0, archi); file::rename (stringlist::first (archi), "Bild 2 ohne Resourcefork.jpg");
return 0; }
static int file::get_date(
char* fullpath,
int whatDate,
int dt_type,
char* result = 0)
Dateidatum ermitteln.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
fullpath | String oder char* | - | Vollständiger Pfad der Datei/des Ordners |
whatDate | int | - | Welche Information wollen Sie holen? kDateCreated kDateModified kDateAttributes kDateAccess kDateBackup Beachten Sie, dass nicht jede Plattform/jedes Betriebssystem über jede dieser Informationen verfügt. |
dt_type | int | - | kShortDateTime Formatangabe systemabhängige Darstellung kShortDate (= 0) kLongDate (= 1) kAbbrevDate (= 2) kShortTime (= 20) kLongTime (= 36) kShortDateTime (= 16) kLongDateTime (= 17) kAbbrevDateTime (= 18) kShortDateLongTime (= 32) kLongDateLongTime (= 33) kAbbrevDateLongTime (= 34) Systemunabhängige Darstellung ddmmyyyy (= 96) ddmmyyyy_hhmm (= 97) ddmmyyyy_hhmmss (= 98) dmyy (= 99) hhmm (= 100) hhmmss (= 101) hmm (= 102) hmmss (= 103) |
result | String oder char* | - | Reservierter Speicher für das Ergebnis |
#include "internal/types.h"
int get_date (char * fi, char * mess) { char created [512]; char modified [512];
file::get_date (fi, kDateCreated, kShortDateTime, created); file::get_date (fi, kDateModified, kShortDateTime, modified);
wlog ("", "# %s\n", fi); wlog ("", "# %s\n", mess); wlog ("", "# created : %s\n", created); wlog ("", "# modified : %s\n", modified);
return 0; }
int main () { char fi [512];
strcpy (fi, "$DESKTOP/2076.indd");
get_date (fi, "Before");
file::set_date (fi, kDateCreated, "17.02.1975 16:08:56"); file::set_date (fi, kDateModified, 26, 11, 2008, 19, 10, 34);
get_date (fi, "After");
return 0; }
static int file::set_date(
char* fullpath,
int whatDate,
char* dt = 0)
ändere das Datum einer Datei.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
fullpath | String oder char* | - | Vollständiger Pfad der Datei/des Ordners |
whatDate | int | - | Welche Information soll gesetzt werden? kDateCreated kDateModified kDateAttributes kDateAccess kDateBackup Beachten Sie, dass nicht jede Plattform/jedes Betriebssystem über jede dieser Informationen verfügt. |
~ Systemabhängige Datum-Uhrzeit | |||
dt | String oder char* | - | gültige Datum-Zeit-Angabe |
~ Systemunabhängige Angabe von Datum und Uhrzeit | |||
day, month, year | int, int, int | - | Datum |
hour, minutes, seconds | int, int, int | - | Zeit |
static char* file::md5hash(char* fullpath, int doUpper = 0)
Berechne den md5hash einer Datei.
Name | Typ | Default | Beschreibung |
Return | char* | 32-stelliger md5hash der Datei.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
fullpath | String oder char* | - | Vollständiger Pfad einer Datei |
doUpper | int | 0 | Groß- oder Kleinbuchstaben für die Hex-Zahlen verwenden? 0 : Kleinbuchstaben 1 : Großbuchstaben |
Berechne den md5hash der Datei des aktuellen Skriptdokumentes.
int main () { char path [2000];
document::path (path, 0); wlog ("", "MD5Hash '%s' : '%s'\n", path, file::md5hash (path));
return 0; }
static int file::pdf_count_pages(char* path, int usePDFlib = 0)
Seitenanzahl in einem PDF. Die Funktion ermittelt die Anzahl der Seiten eines PDF-Dokumentes.
Name | Typ | Default | Beschreibung |
Return | int | >0 : Anzahl der Seiten im PDF sonst : Fehler |
|
path | String oder char* | - | Vollständiger Pfad der PDF-Datei. Der Dateiname muss die Endung "pdf" (in beliebiger Schreibweise) haben. |
usePDFlib | int | 0 | PDFlib zur Abfrage verwenden? 0 : Nein 1 : PDFlib verwenden (nur InDesign® und comet_pdf). Die Verwendung der PDFlib ist lizenzpflichtig. Sie benötigen eine PDFlib+PDI Lizenz für PDFlib 10. Lizenzen können hier erworben werden. Die Lizenzdatei muß den Namen licensekeys.txt haben und sich im Ordner Plug-Ins Ihres InDesigns bzw. im Programmordner von comet_pdf befinden. Aktuell (Jan. 2023) kostet die PDFlib+PDI-Lizenz für Serversysteme 2.390€, für Desktopanwendungen 920€. Es lohnt sich also auf alle Fälle, zuvor die direkte Abfrage mit usePDFlib = 0 zu testen. |
In einem Rahmen steht der Text "Zahl Pfad/zu/einer/PDFDatei.pdf". Die Zahl gibt die Seitenzahl des PDFs an. Das Skript prüft, ob die Funktion file::pdf_count_pages ebenfalls diese Seitenzahl ermittelt. Das Ergebnis sehen Sie im Logfile.
int main () { String str = string::alloc (); int pg; int expected = -12; char chk [256]; char path [1024]; char name [512];
frame::gettext (gFrame, str); expected = string::to_int (string::get_token (str, " ", 0)); strcpy (path, strsubstring (string::get (str), string::length (string::get_token (str, " ", 0)) + 1, -1));
pg = file::pdf_count_pages (path);
if (expected == pg) strcpy (chk, "okay"); else strcpy (chk, "ERROR"); wlog ("", "# Pages :\t%d\t%s\t'%s'\n", pg, chk, file::name (name, path));
return 0; }
static int file::aem_put_asset(
char* url,
char* user,
char* password,
char* assetpath,
char* sourcepath = 0,
char* mimetype = 0)
EXPERIMENTELL! Anlegen und Aktualisieren von Assets und Ordnern eines AEM® (Adobe Experience Manager®). Ordnerpfade werden automatisch im AEM® angelegt, wenn sie noch nicht existieren. Bestehende Ordner bleiben dabei unverändert.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
url | String oder char* | - | URL des AEMs® |
user | String oder char* | - | Benutzername für den Login im AEM® |
password | String oder char* | - | Passwort für den Login im AEM® |
assetpath | String oder char* | - | Vollständiger Pfad des Assets in der Asset-Komponente des AEMs®. Nicht existierende Ordner werden
automatisch angelegt. Bestehende Ordner bleiben unverändert. 0 oder leer : Root-Verzeichnis ("/") |
sourcepath | String oder char* | 0 | Vollständiger Pfad der Datei für das Asset. "" oder 0 : Nur den Ordner assetpath anlegen |
mimetype | String oder char* | 0 | Mimetype des Assets, z.B.image/jpeg "" oder 0 : Es wird versucht, den Mimetype aus der Dateiendung zu bestimmen. |
// Connection data char stHost [] = "http://192.168.0.208:4502"; char stUser [] = "admin"; char stPwd [] = "*****";
int main () { int result; int recbytes = -1;
result = file::aem_put_asset ( stHost, stUser, stPwd, "/aaa/bbb/ccc 12/ddded-fgg", //Folder is created, if needed "$DESKTOP/schnipp Kopie.jpg"); wlog ("", "Create/Update asset 1 : %d\n", result);
result = file::aem_put_asset ( stHost, stUser, stPwd, "/aaa/bbb/ccc 12/ddded-fgg", //Folder is created, if needed "$DESKTOP/rot.JPG"); wlog ("", "Create/Update asset 2 : %d\n", result);
result = file::aem_put_asset ( stHost, stUser, stPwd, "/qwertzu/Paul Seidel", ""); // Create folder only wlog ("", "Create folder : %d\n", result);
result = file::aem_get_asset ( stHost, stUser, stPwd, "/aaa/bbb/ccc 12/ddded-fgg/schnipp Kopie.jpg", "$DESKTOP/qwertzu_bild.jpg" &recbytes); wlog ("", "Download asset : %d, %d bytes received\n", result, recbytes);
return 0; }
static int file::aem_get_asset(
char* url,
char* user,
char* password,
char* assetpath,
char* destpath,
char* deststr = 0,
int* maxlen = 0)
EXPERIMENTELL! Holen eines Assets eines AEM® (Adobe Experience Manager®). Das Asset kann wahlweise in eine Datei oder einen String geladen werden.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
url | String oder char* | - | URL des AEMs® @aem am Anfang : Der String enthält die komplette URL inkl. evtl. Benutzernamen und Passwort, und Asset-Pfad. Die Angaben für user, password und assetpath werden in diesem Fall ignoriert. |
user | String oder char* | - | Benutzername für den Login im AEM® |
password | String oder char* | - | Passwort für den Login im AEM® |
assetpath | String oder char* | - | Vollständiger Pfad des Assets in der Asset-Komponente des AEMs®. 0 oder leer : Root-Verzeichnis ("/") |
destpath | String oder char* | - | Vollständiger Pfad für die Zieldatei. Eine evtl. existierende Zieldatei
wird überschrieben. "" oder 0 : Schreibe das Ergebnis in den String deststr. |
deststr | String oder char* | 0 | Ergebnisstring. Der Parameter wird nur verwendet, wenn destpath 0 oder
leer ist. Bitte beachten Sie, dass der String beim Download binärer Daten 0-Bytes enthalten kann! In diesem Fall können die vollständigen Daten mit string::size und string::data abgeholt werden. |
maxlen | int* | 0 | Achtung : Die Variable ist ein Pointer! In der Eingabe wird die Variable nur verwendet, wenn destpath 0 oder leer ist und wenn deststr vom Typ char* (und nicht String) ist. Dann wird der Inhalt der Variablen als maximal zulässige Länge des Ergebnisses verwendet. Überzählige Bytes werden entsprechend vom Ergebnisstring abgeschnitten. Achtung: Abgeschnittene Ergebnisse können bei Binärdaten und bei durch unvollständige UTF-8-Zeichen zu Problemen führen! 0 oder Inhalt < 0 : beliebige Länge sonst : Maximallänge wie eben beschrieben Nach erfolgreicher Ausführung der Funktion enthält die Variable die Anzahl der vom AEM® erhaltenen Bytes. Ist deststr vom Typ String, kann mit string::data auch auf Binärdaten im Ergebnis zugegriffen werden. 0 : Rückgabe ignorieren sonst : Anzahl der erhaltenen Bytes |
// Connection data char stHost [] = "http://192.168.0.208:4502"; char stUser [] = "admin"; char stPwd [] = "*****";
int main () { int result; int recbytes = -1;
result = file::aem_put_asset ( stHost, stUser, stPwd, "/aaa/bbb/ccc 12/ddded-fgg", //Folder is created, if needed "$DESKTOP/schnipp Kopie.jpg"); wlog ("", "Create/Update asset 1 : %d\n", result);
result = file::aem_put_asset ( stHost, stUser, stPwd, "/aaa/bbb/ccc 12/ddded-fgg", //Folder is created, if needed "$DESKTOP/rot.JPG"); wlog ("", "Create/Update asset 2 : %d\n", result);
result = file::aem_put_asset ( stHost, stUser, stPwd, "/qwertzu/Paul Seidel", ""); // Create folder only wlog ("", "Create folder : %d\n", result);
result = file::aem_get_asset ( stHost, stUser, stPwd, "/aaa/bbb/ccc 12/ddded-fgg/schnipp Kopie.jpg", "$DESKTOP/qwertzu_bild.jpg" &recbytes); wlog ("", "Download asset : %d, %d bytes received\n", result, recbytes);
return 0; }
Alphabetic index HTML hierarchy of classes or Java