Тип данных файла используется для размещения двоичных данных в различных интерфейсах приложений API. Каждый вызов интерфейса приложений API, содержащий хотя бы один аргумент файла типа, должен отвечать следующим требованиям:
-
Необходимо использовать метод HTTP POST.
-
Должен быть сформирован запрос на многокомпонентные/форматные данные, описанные в спецификациях HTML.
Примеры
Java HttpClient
HttpClient httpclient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(webServerUrl); MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null, Charset.forName("UTF-8")); задача StringBodyPart; формат StringBodyPart; StringBody saveToTransMemoryPart; StringBody setCompletedPart; ByteArrayBody fileContentPart; // ... заполнить переменные данными ... // 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* буфер = новый QBuffer( multiPartData ); буфер->open( QIODevice::Только запись ); // ... заполнить буфер данными ... // writer.writeTo( buffer ); буфер->закрыть(); 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 + "\"" ) ); буфер->открыть( QIODevice::Только для чтения ); filePart.setBodyDevice( buffer ); multiPartData->append( filePart );