파일을받을 수있는 REST API (java)을 작성하려고합니다.Java에서 파일 보내기 REST 끝점
이import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;
@POST
@Path("/upload")
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
System.out.println("File Upload invoked");
return Response.status(200).entity("File saved to " + UPLOAD_FOLDER).build();
}
은 다음이 엔드 포인트에 파일을 보내려고 클라이언트가 될 때 :
HttpPost httppost = new HttpPost(URL);
httppost.addHeader(HttpHeaders.CONTENT_TYPE,MediaType.MULTIPART_FORM_DATA);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
FileBody fileBody = new FileBody(file);
builder.addPart("file", fileBody);
builder.setContentType(ContentType.MULTIPART_FORM_DATA);
HttpEntity entity = builder.build();
httppost.setEntity(entity);
HttpResponse responseFromUpload = httpclient.execute(httppost);
int statusCode = responseFromUpload.getStatusLine().getStatusCode();
그러나,이 설정으로, 내가 가없는가 칠 나는 다음과 같이 내 REST API를 본다 REST 엔드 포인트. 그리고 TomcatServer 로그는 말한다 :
[500] Exception occurred : argument type mismatch
를 그런 다음, 다음과 같이 나는 REST API의 정의를 변경 시도 :
이 설정으로public Response uploadFile(MultipartFormDataInput input) {}
사실에 로그인 한 다음 오류가있는 REST API를 도달 할 수 있어요 나머지의 API 측 :
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.wso2.msf4j.internal.router.HttpMethodInfo.invoke(HttpMethodInfo.java:132)
at org.wso2.msf4j.internal.MSF4JMessageProcessor.dispatchMethod(MSF4JMessageProcessor.java:130)
at org.wso2.msf4j.internal.MSF4JMessageProcessor.receive(MSF4JMessageProcessor.java:72)
at org.wso2.carbon.transport.http.netty.listener.WorkerPoolDispatchingSourceHandler.lambda$publishToWorkerPool$12(WorkerPoolDispatchingSourceHandler.java:125)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
나는 웹에 다른 소스에서 다른 설정을 시도하고 여전히 제대로 설정할 수 없습니다 생각 했어요.
내 설정에서 누락 된 부분을 이해하는 데 도움이되고 어떻게 해결하여이 작업을 수행 할 수 있습니까?
고맙습니다.