Le type de données d'un fichier est utilisé pour poster des données binaires dans divers appels d'API. Chaque appel d'API contenant au moins un argument de type fichier doit répondre aux exigences suivantes :
-
La méthode HTTP POST doit être utilisée.
-
Une requête multipart/form-data comme décrite dans HTML specs 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 );