2017-10-09 198 views
0

我正在開發一個POST方法,它必須接收一個excel文件,但我遇到了一些問題。這是我的代碼使用POST上傳excel文件時出現JAX-RS問題

@Path("/rest") 
public class RestManager{ 
    [...] 

    @Path("/uploadFile") 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    @POST 
    public Response uploadFile(FormDataMultiPart multipart){ 
     [...] 
    } 
} 

當我調用API,在服務器端,我有以下錯誤:

ott 09, 2017 4:58:48 PM org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor aroundReadFrom 
GRAVE: MessageBodyReader not found for media type=multipart/form-data, type=class com.sun.jersey.multipart.FormDataMultiPart, genericType=class com.sun.jersey.multipart.FormDataMultiPart. 

在我的web.xml,我添加以下代碼:

<init-param> 
    <param-name>jersey.config.server.provider.classnames</param-name> 
     <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value> 
    </init-param> 

我在Tomcat v7.0上運行,並添加了jersey-multipart-1.18和mimepull-1.9.3來管理Multipart數據。

我的客戶端響應獲取415 Unsupported Media Type,但在代碼中,我使用該請求發送請求「Content-Type」:'multipart/form-data',相應地使用@Consumes註釋。

任何人都可以給我提示,瞭解問題出在哪裏?

回答

1

您使用的是錯誤的FormDataMultiPart。你使用的是Jersey 1.x jar,但你應該使用Jersey 2.x中的那個。罐子是jersey-media-multipart。一旦添加了該jar並刪除了1.x jar,則FormDataMultiPart的軟件包名稱將會有所不同。您需要從org.glassfish.jersey.multipart導入。

另一件事,根據您使用的澤西(小)版本和您使用的jersey-media-multipart版本,mimepull版本也將有所不同。檢出this link並單擊您正在使用的版本。然後向下滾動到「編譯相關性」。你會看到mimepull。這是您需要的版本,與您使用的jersey-media-multipart版本兼容。

相關問題