Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 状态代码415:未找到多部分/表单数据的MessageBodyReader,FormDataMultiPart_Java_Rest_Maven_Tomcat_Jersey - Fatal编程技术网

Java 状态代码415:未找到多部分/表单数据的MessageBodyReader,FormDataMultiPart

Java 状态代码415:未找到多部分/表单数据的MessageBodyReader,FormDataMultiPart,java,rest,maven,tomcat,jersey,Java,Rest,Maven,Tomcat,Jersey,我在将多部分/表单数据发布到我创建的RESTful web服务时遇到了一些问题。我试图通过RESTful web服务上传媒体文件(图像、视频、音频)。我在谷歌上搜索了一下,找到了最好的方法,发现发布多部分/表单数据是最好的解决方案 问题是,当我发布一些多部分/表单数据时,我在Tomcat服务器中收到以下错误消息: SEVERE MessageBodyReader not found for media type=multipart/form-data; boundary=----WebKitFo

我在将多部分/表单数据发布到我创建的RESTful web服务时遇到了一些问题。我试图通过RESTful web服务上传媒体文件(图像、视频、音频)。我在谷歌上搜索了一下,找到了最好的方法,发现发布多部分/表单数据是最好的解决方案

问题是,当我发布一些多部分/表单数据时,我在Tomcat服务器中收到以下错误消息:

SEVERE MessageBodyReader not found for media type=multipart/form-data; boundary=----WebKitFormBoundaryTg7uVLcYJ3lsBpQE, type=class org.glassfish.jersey.media.multipart.FormDataMultiPart, genericType=class org.glassfish.jersey.media.multipart.FormDataMultiPart.
我确实试着在stackoverflow上寻找答案,但问题似乎是许多人缺少一个mimepull.jar。我检查以确保我的类路径中有一个mimepull.jar,事实上确实如此,所以这不是问题所在。在这一点上,我被卡住了

以下是我在pom.xml中的依赖项:

<dependencies>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.5.1</version>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.12</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>2.12</version>
    </dependency>
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.4.2</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.12</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>2.12</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.4.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.4.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.4.2</version>
    </dependency>
</dependencies>
最后,这里是我用来测试将文件发送到后端的测试页面:

<html>
   <head>
      <title></title>
   </head>
   <body>
      <h1>File Upload with Jersey</h1>

      <form action="/rest/surveys/media" method="post" enctype="multipart/form-data">

         <p>
            Select a file : <input type="file" name="file" size="45" />
         </p>

         <input type="submit" value="Upload It" />
      </form>
   </body>
</html>

用Jersey上传文件

选择一个文件:


如果你需要更多信息,请告诉我。提前感谢您的帮助

我在通过Jersey实现文件上传程序时遇到了类似的问题,因此我最终采用了一种稍微不同的方法,该方法的参数是InputStream和FormDataContentDisposition对象

这里有一个例子;也许这对你有用:

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces({MediaType.APPLICATION_JSON})
public Response uploadFile(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail) throws Exception {

    String filename = fileDetail.getFileName();
    String uploadedFileLocation = "C:\\surveymedia\\media" + filename;
    try {
        saveFile(uploadedInputStream, uploadedFileLocation);
    }
    catch(Exception e){
        return Response.status(400).entity(e.getCause()).build();
    }

    String output = "File uploaded to: " + uploadedFileLocation;
    return Response.status(200).entity(output).build();
}

我忘了这个问题,很抱歉回复得很晚。这正是我最终选择的答案。
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces({MediaType.APPLICATION_JSON})
public Response uploadFile(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail) throws Exception {

    String filename = fileDetail.getFileName();
    String uploadedFileLocation = "C:\\surveymedia\\media" + filename;
    try {
        saveFile(uploadedInputStream, uploadedFileLocation);
    }
    catch(Exception e){
        return Response.status(400).entity(e.getCause()).build();
    }

    String output = "File uploaded to: " + uploadedFileLocation;
    return Response.status(200).entity(output).build();
}