O tipo de dados de um arquivo é usado para publicar dados binários em várias chamadas de API. Toda chamada de API que contém pelo menos um argumento do tipo arquivo deve atender aos seguintes requisitos:
-
O método HTTP POST deve ser usado.
-
Uma solicitação multipart/form-data conforme descrito nas especificações HTML deve ser formada.
Exemplos
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;
// ... preencha as variáveis com dados ... //
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 ); // ... preencha o buffer com dados ... // 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 );