Тип данных файла используется для отправки двоичных данных в различные вызовы интерфейс приложений API. Каждый вызов интерфейс приложений API, содержащий как минимум один аргумент типа file, должен соответствовать следующим требованиям:
-
Необходимо использовать метод HTTP POST.
-
Должен быть сформирован запрос multipart/form-data, как описано в спецификациях HTML.
Примеры
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;
// ... заполните переменные данными ... //
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 ); // ... заполните буфер данными ... // 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 );