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:
-
È necessario utilizzare il metodo HTTP POST.
-
È necessario formare una richiesta di dati multipart/form come descritto nelle specifiche HTML.
Esempi
Java HttpClient
HttpClient httpclient = nuovo DefaultHttpClient(); HttpPost httpPost = new HttpPost(webServerUrl); MultipartEntity reqEntity = nuovo 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 = nuovo QHttpMultiPart( QHttpMultiPart::FormDataType ); Buffer QBuffer* = nuovo 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 );