Le type de données d'un fichier est utilisé pour publier des données binaires dans divers appels API. Chaque appel API contenant au moins un argument de type file doit répondre aux exigences suivantes :
-
La méthode HTTP POST doit être utilisée.
-
Une requête multipart/form-data telle que décrite dans les spécifications HTML doit être formée.
Exemples
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;
// ... remplir les variables avec des données ... //
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 ); // ... remplir le tampon avec des données ... // writer.writeTo( buffer ); buffer->close(); QHttpPart filePart; filePart.setHeader( QNetworkRequest::ContentTypeHeader, QVariant( "application/octet-stream" ) ); filePart.setHeader( QNetworkRequest::ContentDispositionHeader, QVariant( QString( \"form-data; name=\\\"bilingualFile\\\"; filename=\\\"\" ) + model->getFileInfos()[0].original + \"\\\"\" ) ); buffer->open( QIODevice::ReadOnly ); filePart.setBodyDevice( buffer ); multiPartData->append( filePart );