Datový typ souboru se používá k odesílání binárních dat do různých volání API. Každé volání API, které obsahuje alespoň jeden argument typu soubor, musí splňovat následující požadavky:
-
Musí být použita metoda HTTP POST.
-
Musí být vytvořen požadavek Multipart/form-data, jak je popsáno ve specifikacích HTML.
Příklady
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; // ... naplňte proměnné daty ... // 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 ); // ... naplňte buffer daty ... // 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 );