파일의 데이터 유형은 다양한 API 호출에 바이너리 데이터를 업로드하는 데 사용돼. 파일 타입의 인수를 하나 이상 포함하는 모든 API 호출은 다음 요구 사항을 충족해야 해:
-
HTTP POST 메서드를 사용해야 해.
-
HTML 사양에 설명된 대로 Multipart/form-data 요청이 형성되어야 해.
예시
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 );