class com.sun.jersey.core.header.FormDataContentDi

2019-09-10 14:04发布

I'm trying to upload a file using REST API (I'm using wildfly Server), and I'm getting this error:

failed to execute: javax.ws.rs.NotSupportedException: Could not find message body reader for type: class com.sun.jersey.core.header.FormDataContentDisposition of content type: multipart/form-data;

This my code:

@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<>();
        addRestResourceClasses(resources);

        return resources;
    }

    private void addRestResourceClasses(Set<Class<?>> resources) {
        resources.add(com.services.DocumentFacadeREST.class);
    }

}

@Stateless
@Path("documents")
public class DocumentFacadeREST{

    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.TEXT_PLAIN)
    public String uploadFile(
            @FormDataParam("file") InputStream uploadedInputStream,
            @FormDataParam("file") FormDataContentDisposition fileDetail) {

        String uploadedFileLocation = "E://uploadFileRest/"+ fileDetail.getFileName();

        // save it
        writeToFile(uploadedInputStream, uploadedFileLocation);

        String output = "File uploaded to : " + uploadedFileLocation;

        return output;

    }

    // save uploaded file to new location
    private void writeToFile(InputStream uploadedInputStream, String uploadedFileLocation) {

        try {
            OutputStream out = new FileOutputStream(new File(
                    uploadedFileLocation));
            int read = 0;
            byte[] bytes = new byte[1024];

            out = new FileOutputStream(new File(uploadedFileLocation));
            while ((read = uploadedInputStream.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }
            out.flush();
            out.close();
        } catch (IOException e) {

            e.printStackTrace();
        }

    }

}

And this is the dependencies that I use in my pom.xml:

<dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>jersey-multipart</artifactId>
        <version>1.8</version>
</dependency>

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-client</artifactId>
    <version>1.17.1</version>
</dependency>

 <dependency>
       <groupId>org.hornetq</groupId>
       <artifactId>hornetq-core</artifactId>
       <version>snap-r9548</version>
 </dependency>

My html form:

   <form action="webresources/documents/upload2" method="post" enctype="multipart/form-data">

      <p>
          Select a file : 
          <input type="file" name="file" size="45" />
      </p>
      <input type="submit" value="Upload" />
   </form>

Please can you help me to know why I got the error, I spent all the day in investigation without any result.

Thanks in advance.

1条回答
做自己的国王
2楼-- · 2019-09-10 14:49

Try to use resteasyaxrs instead of jersy in wildfly

jars needed

  1. List item
  2. resteasyjaxrs.jar
  3. resteasy-multipart-provider.jar
  4. commonsi0.jar

Rest Api

@Path("/uploadfile")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(MultipartFormDataInput input) {
    Map<String, List<InputPart>> uploadForm = input.getFormDataMap();
    List<InputPart> inputParts = uploadForm.get("file");
}
查看更多
登录 后发表回答