Der Datentyp einer Datei wird verwendet, um binäre Daten in verschiedene API-Aufrufe zu posten. Jeder API-Aufruf, der mindestens ein Argument vom Typ Datei enthält, muss die folgenden Anforderungen erfüllen:
-
Die HTTP-POST-Methode muss verwendet werden.
-
Eine Multipart/form-data-Anfrage, wie in HTML-Spezifikationen beschrieben, muss gebildet werden.
Beispiele
Java HttpClient
HttpClient httpclient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(webServerUrl); MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null, Charset.forName("UTF-8")); StringBody taskPart; StringBody formatPart; StringBody saveToTransMemoryPart; StringBody setCompletedPart; ByteArrayBody fileContentPart; // ... Variablen mit Daten füllen ... // reqEntity.addPart("task", taskPart); reqEntity.addPart("format", formatPart); reqEntity.addPart("saveToTransMemory", saveToTransMemoryPart); reqEntity.addPart("setCompleted", setCompletedPart); reqEntity.addPart("bilingualFile", fileContentPart); httpPost.setEntity(reqEntity);
C++ Qt
QHttpMultiPart* multiPartData = new QHttpMultiPart( QHttpMultiPart::FormDataType ); QBuffer* buffer = new QBuffer( multiPartData ); buffer->open( QIODevice::WriteOnly ); // ... Puffer mit Daten füllen ... // writer.writeTo( buffer ); Puffer->schließen(); QHttpPart filePart; filePart.setHeader( QNetworkRequest::ContentTypeHeader, QVariant( "application/octet-stream" ) ); dateiTeil.setHeader( QNetworkRequest::ContentDispositionHeader, QVariant( QString( "form-data; name=\"bilingualFile\"; filename=\"" ) + model->getFileInfos()[0].original + "\"" ) ); Puffer->öffnen( QIODevice::ReadOnly ); filePart.setBodyDevice( buffer ); multiPartData->append( filePart );