> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Beispiele für POST-Anfragen an den Datei-Service

> C#-Beispiele für POST-Anfragen an den ABBYY FlexiCapture-Datei-Service: Dateien vom Server laden, Dateien hochladen, eine Prüfsumme abrufen und eine Datei in Teilen ändern.

Die folgenden C#-Beispiele zeigen, wie Sie [POST-Anfragen](/de/flexi-capture/api/files/files) für die Arbeit mit Dateien auf dem Server verwenden.

<div id="load-files-from-the-server">
  ## Dateien vom Server laden
</div>

Um eine Datei vom Server zu laden, erstellen Sie eine Serveranfrage an `AppServerURL + "/FlexiCapture12/Server/FileService/v1"`. Verwenden Sie die `POST-Methode` und den Content-Type `application/x-www-form-urlencoded`. Speichern Sie die Ergebnisse in einer neuen Datei.

Request-Body und C#-Methode:

```csharp theme={null}
"Action=Load" +"&sessionId=" + session + "&objectType=" + objectType + "&projectId=" + projectId + "&batchId=" + batchId + "&objectId=" + objectId + "&version=" + version + "&streamName=" + streamName
static private CredentialCache basicAuthenticationCredentialCache = null;
public static List<byte> POSTLoadFile(string AppServerURL, int session, int projectId, int batchId, int objectType, int objectId, int version, int parentId, string streamName)
       {
            List<byte> result = new List<byte>();
            HttpWebResponse response = null;
            Stream responseStream = null;
            BinaryReader reader = null;
            try
            {
                // Anfrage erstellen
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AppServerURL + "/FlexiCapture12/Server/FileService/v1");
                request.Method = "POST";
                // Authentifizierung beim Verbinden mit dem Webservice einrichten
                if (basicAuthenticationCredentialCache != null)
                {
                    request.Credentials = basicAuthenticationCredentialCache;
                }
                else
                {
                    request.UseDefaultCredentials = true;
                }
                request.ContentType = "application/x-www-form-urlencoded";
                string postData = "Action=Load" +
                    "&sessionId=" + session +
                    "&objectType=" + objectType +
                    "&projectId=" + projectId +
                    "&batchId=" + batchId +
                    "&parentId=" + parentId +
                    "&objectId=" + objectId +
                    "&version=" + version +
                    "&streamName=" + streamName;
                StreamWriter writer = new StreamWriter(request.GetRequestStream());
                writer.Write(postData);
                writer.Close();                  
           
                // Antwort empfangen
                response = (HttpWebResponse)request.GetResponse();
                responseStream = response.GetResponseStream();
                reader = new BinaryReader(responseStream);
                int responseStreamLength = 0;
                while (true)
                {
                    try
                    {
                        result.Add(reader.ReadByte());
                        responseStreamLength++;
                    }
                    catch (EndOfStreamException)
                    {
                        break;
                    }
                }
                reader.Close();
                responseStream.Close();
                response.Close();               
            }
            if (response != null) response.Close();
            if (responseStream != null) responseStream.Close();
            if (reader != null) reader.Close();
            return result;
        }
```

<div id="upload-files-to-the-server">
  ## Dateien auf den Server hochladen
</div>

Öffnen Sie zunächst eine vorhandene Datei und lesen Sie die darin enthaltenen Daten. Rufen Sie mithilfe von `Encoding.Default` den `content`-String aus der Binärdatei ab.

Um die Datei zu speichern, erstellen Sie eine Serveranfrage an `AppServerURL + "/FlexiCapture12/Server/FileService/v1"`. Verwenden Sie die `POST-Methode` und den Content-Type `multipart/form-data`.

Request-Body und C#-Methode:

```csharp theme={null}
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"Action\"\r\n\r\nSave" +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectType\"\r\n\r\n" + objectType +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"sessionId\"\r\n\r\n" + session +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"projectId\"\r\n\r\n" + projectId +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"batchId\"\r\n\r\n" + batchId +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectId\"\r\n\r\n" + objectId +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"version\"\r\n\r\n" + version +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"streamName\"\r\n\r\n" + streamNameInBase64 +            // Name des binären Streams in Base64
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"blob\";filename=\"filename.txt\"\r\nContent-Type: application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\n"+                                       // der Wert des filename-Parameters hat keinen Einfluss auf den Request selbst
content +                                                                        //Daten, die auf den Server hochgeladen werden
"\r\n--" + requestId + "--\r\n";
static private CredentialCache basicAuthenticationCredentialCache = null;
// der „content"-String sollte mithilfe von Encoding.Default aus der Binärdatei gewonnen werden
        public static List<byte> POSTSaveFile(string AppServerURL, int session, int projectId, int batchId, int objectType, int objectId, int version, string streamName, string content)
        {
            List<byte> result = new List<byte>();
            HttpWebResponse response = null;
            Stream responseStream = null;
            StreamReader reader = null;
            int requestId = Environment.TickCount;
            try
            {
                // Request erstellen
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AppServerURL + "/FlexiCapture12/Server/FileService/v1");
                request.Method = "POST";
                // Authentifizierung beim Verbinden mit dem Webservice einrichten
                if (basicAuthenticationCredentialCache != null)
                {
                    request.Credentials = basicAuthenticationCredentialCache;
                }
                else
                {
                    request.UseDefaultCredentials = true;
                }
                request.ContentType = "multipart/form-data, boundary=" + requestId;
                byte[] streamNameInBytes = Encoding.Unicode.GetBytes(streamName);
                UnicodeEncoding UTFencofing = new UnicodeEncoding();
                string postData = "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"Action\"\r\n\r\nSave" +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectType\"\r\n\r\n" + objectType +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"sessionId\"\r\n\r\n" + session +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"projectId\"\r\n\r\n" + projectId +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"batchId\"\r\n\r\n" + batchId +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectId\"\r\n\r\n" + objectId +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"version\"\r\n\r\n" + version +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"streamName\"\r\n\r\n" + Convert.ToBase64String(streamNameInBytes) +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"blob\";filename=\"filename.txt\"\r\nContent-Type: application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\n";
                postData += content;
                postData += "\r\n--" + requestId + "--\r\n";
                StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.Default);
                writer.Write(postData);
                writer.Close();  
                // Antwort empfangen
                response = (HttpWebResponse)request.GetResponse();
                responseStream = response.GetResponseStream(); 
                reader = new StreamReader(responseStream);
                reader.Close();
                responseStream.Close();
                response.Close();
            }
            if (response != null) response.Close();
            if (responseStream != null) responseStream.Close();
            if (reader != null) reader.Close();
            return result;
        }
```

<div id="get-a-checksum">
  ## Prüfsumme abrufen
</div>

Um eine Prüfsumme abzurufen, erstellen Sie eine Serveranfrage an `AppServerURL + "/FlexiCapture12/Server/FileService/v1"`. Verwenden Sie die `POST-Methode` und den Content-Type `application/x-www-form-urlencoded`.

Request-Body und C#-Methode:

```csharp theme={null}
"Action=Checksum" + "&sessionId=" + session + "&objectType=" + objectType + "&projectId=" + projectId + "&batchId=" + batchId + "&objectId=" + objectId + "&version=" + version + "&streamName=" + streamName
static private CredentialCache basicAuthenticationCredentialCache = null;
public static List<byte> POSTGetChecksum(string AppServerURL, int session, int projectId, int batchId, int objectType, int objectId, int version, string streamName)
        {
   List<byte> result = new List<byte>();
   HttpWebResponse response = null;
   Stream responseStream = null;
   BinaryReader reader = null;
   try
            {
                // Anfrage erstellen
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AppServerURL + "/FlexiCapture12/Server/FileService/v1");
                request.Method = "POST";
                // Authentifizierung beim Verbinden mit dem Webservice einrichten
    if (basicAuthenticationCredentialCache != null)
    {
     request.Credentials = basicAuthenticationCredentialCache;
    }
    else
    {
     request.UseDefaultCredentials = true;
    }
    request.ContentType = "application/x-www-form-urlencoded";
    string postData = "Action=Checksum" +
     "&sessionId=" + session +
     "&objectType=" + objectType +
     "&projectId=" + projectId +
     "&batchId=" + batchId +
     "&objectId=" + objectId +
     "&version=" + version +
     "&streamName=" + streamName;
    StreamWriter writer = new StreamWriter(request.GetRequestStream());
    writer.Write(postData);
    writer.Close();
                // Antwort empfangen
    response = (HttpWebResponse)request.GetResponse();
    responseStream = response.GetResponseStream();
    reader = new BinaryReader(responseStream);
    int responseStreamLength = 0;
    while (true)
    {
     try
     {
      result.Add(reader.ReadByte());
      responseStreamLength++;
     }
     catch (EndOfStreamException)
     {
      break;
     }
    }
    reader.Close();
    responseStream.Close();
    response.Close();
   }
   if (response != null) response.Close();
   if (responseStream != null) responseStream.Close();
   if (reader != null) reader.Close();
   return result;
  }
```

<div id="load-by-parts-modify-an-existing-file">
  ## Laden in Teilen (Ändern einer vorhandenen Datei)
</div>

Sie können nur eine Datei ändern, die bereits auf dem Server vorhanden ist. Erstellen Sie die Datei daher zuerst mit der Methode `POSTSaveFile`.

Um die Datei zu ändern, senden Sie eine Serveranfrage an `AppServerURL + "/FlexiCapture12/Server/FileService/v1"`. Verwenden Sie die `POST-Methode` und den Content-Type `multipart/form-data`.

Request-Body und C#-Methode:

```csharp theme={null}
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"Action\"\r\n\r\nAppend" +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectType\"\r\n\r\n" + objectType +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"sessionId\"\r\n\r\n" + session +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"projectId\"\r\n\r\n" + projectId +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"batchId\"\r\n\r\n" + batchId +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectId\"\r\n\r\n" + objectId +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"version\"\r\n\r\n" + version +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"streamName\"\r\n\r\n" + streamNameInBase64 +
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"blob\";filename=\"filename.txt\"\r\nContent-Type: application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\n" +
content +                                                                                                                              //dieser String sollte auf die gleiche Weise wie im vorherigen Beispiel ermittelt werden
"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"offset\"\r\n\r\n" + offset +            //der Versatz vom Anfang der Datei, an dem der Eintrag beginnt
"\r\n--" + requestId + "--\r\n";
static private CredentialCache basicAuthenticationCredentialCache = null;
// Der String "content" sollte mithilfe von Encoding.Default aus der Binärdatei ermittelt werden
        // Hinweis: Es können nur Daten an eine bereits vorhandene Datei angehängt werden, d. h. die Datei muss zunächst mit der Methode POSTSaveFile erstellt werden
        public static List<byte> POSTAppendFile(string AppServerURL, int session, int projectId, int batchId, int objectType, int objectId, int version, string streamName, string content, int offset)
        {
            List<byte> result = new List<byte>();
            HttpWebResponse response = null;
            Stream responseStream = null;
            StreamReader reader = null;
            int requestId = Environment.TickCount;
            try
            {
                // Anfrage erstellen
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AppServerURL + "/FlexiCapture12/Server/FileService/v1");
                request.Method = "POST";
                // Authentifizierung für die Verbindung mit dem Webservice einrichten
                if (basicAuthenticationCredentialCache != null)
                {
                    request.Credentials = basicAuthenticationCredentialCache;
                }
                else
                {
                    request.UseDefaultCredentials = true;
                }
                request.ContentType = "multipart/form-data, boundary=" + requestId;
                byte[] streamNameInBytes = Encoding.Unicode.GetBytes(streamName);
                UnicodeEncoding UTFencofing = new UnicodeEncoding();
                string postData = "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"Action\"\r\n\r\nAppend" +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectType\"\r\n\r\n" + objectType +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"sessionId\"\r\n\r\n" + session +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"projectId\"\r\n\r\n" + projectId +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"batchId\"\r\n\r\n" + batchId +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectId\"\r\n\r\n" + objectId +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"version\"\r\n\r\n" + version +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"streamName\"\r\n\r\n" + Convert.ToBase64String(streamNameInBytes) +
                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"blob\";filename=\"filename.txt\"\r\nContent-Type: application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\n";
                postData += content;
                postData += "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"offset\"\r\n\r\n" + offset;
                postData += "\r\n--" + requestId + "--\r\n";
                StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.Default);
                writer.Write(postData);
                writer.Close();
                // Antwort empfangen
                response = (HttpWebResponse)request.GetResponse();
                responseStream = response.GetResponseStream();
                // Antwort anzeigen
                reader = new StreamReader(responseStream); 
                reader.Close();
                responseStream.Close();
                response.Close();
            }
            if (response != null) response.Close();
            if (responseStream != null) responseStream.Close();
            if (reader != null) reader.Close();
            return result;
        }
```
