Spam Garbage
Spam Garbage

Reputation: 69

How to resolve 415 Unsupported Media Type?

I wrote an API to upload files. I'm using org.glassfish.jersey. I installed the project locally on WebSphere and wanted to test this endpoint using Postman, but got 415 Unsupported Media Type error. I tried to upload .pdf file. In Postman I'm using correct url, method POST, to upload file I use Body with key type file name "file" and VALUE is my .pdf file

My code:

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public Response uploadImage(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetails) {

   System.out.println(fileDetails.getFileName());

   String uploadedFileLocation = "C:/temp/" + fileDetails.getFileName();

   // save it
   writeToFile(uploadedInputStream, uploadedFileLocation);

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

   return Response.status(Response.Status.OK).entity(output).build();
}

// 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();
   }
}

Here is my web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
    version="3.0">

    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>
    
    <servlet>
        <servlet-name>Jersey REST Service</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer
        </servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.javatpoint.rest</param-value>
        </init-param>
        <init-param>
            <param-name>jersey.config.server.provider.classnames</param-name>
            <param-value>org.glassfish.jersey.filter.LoggingFilter;
                org.glassfish.jersey.media.multipart.MultiPartFeature
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey REST Service</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

Upvotes: 0

Views: 424

Answers (1)

Spam Garbage
Spam Garbage

Reputation: 69

I resolved this issue by changing param-value in web.xml , i used wrong package name, and changed jersey version from 2.9 to 2.25.1

Upvotes: 0

Related Questions