Il tipo di dati di un file viene utilizzato per pubblicare dati binari in varie chiamate API. Ogni chiamata API che contiene almeno un argomento di tipo file deve soddisfare i seguenti requisiti:
-
Deve essere utilizzato il metodo HTTP POST.
-
Deve essere formata una richiesta Multipart/form-data come descritto nelle specifiche HTML.
Esempi
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;
// ... riempire le variabili con i dati ... //
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 ); // ... riempire il buffer con i dati ... // 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 );