HTTP Status 415 - Unsupported Media Type

本文介绍了解决使用Jersey框架上传文件时遇到的问题。主要问题是由于依赖包放置位置不正确导致的415错误。文章详细记录了问题排查过程及最终解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

server 代码:

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
System.out.println("uploadFile start");


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


writeToFile(uploadedInputStream, uploadedFileLocation);


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

测试代码:

<form method="post" action="http://192.168.1.67:8080/HTTPtest/services/uploadfile/upload" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit"/>
</form>

结果总是报:

2013-8-22 10:19:38 com.sun.jersey.spi.container.ContainerRequest getEntity

严重: A message body reader for Java class com.sun.jersey.core.header.FormDataContentDisposition, and Java type class com.sun.jersey.core.header.FormDataContentDisposition, and MIME media type multipart/form-data;boundary=----WebKitFormBoundaryuLityYGZVIgcPrJC was not found
2013-8-22 10:19:38 com.sun.jersey.spi.container.ContainerRequest getEntity
严重: The registered message body readers compatible with the MIME media type are:
*/* ->
  com.sun.jersey.core.impl.provider.entity.FormProvider
  com.sun.jersey.core.impl.provider.entity.StringProvider
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
  com.sun.jersey.core.impl.provider.entity.ReaderProvider
  com.sun.jersey.core.impl.provider.entity.DocumentProvider
  com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
  com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General

  com.sun.jersey.core.impl.provider.entity.EntityHolderReader


HTTP Status 415 - Unsupported Media Type


type Status report

message Unsupported Media Type

description The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.


Apache Tomcat/7.0.39

google 了很多原因如下:

要包含jersey-multipart.jar 和 mimepull.jar  并且要和 jersey-server.jar 版本一致。

调了很据还是会出现以上问题。最后在tomcat的webapps\HTTPtest\WEB-INF\lib里边没有发现Reference Library 里的jar包!

原来我把jar包放在了项目根目录的lib文件夹里了而没有放在WEB-INF文件夹里的lib文件夹里。

改后过段问题解决。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值