这两天在使用jersey 构建的jersey JAX-RS REST服务器,在通过POST方法上传文件的时候,如果根据example来操作的话会引发如下异常:

 SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.lotame.ws.api.resources.FileResource.uploadFile(java.io.InputStream,com.   sun.jersey.core.header.FormDataContentDisposition) at parameter at index
SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.lotame.ws.api.resources.FileResource.uploadFile(java.io.InputStream,com. sun.jersey.core.header.FormDataContentDisposition) at parameter at index
SEVERE: Method, public javax.ws.rs.core.Response com.lotame.ws.api.resources.FileResource.uploadFile(java.io.InputStream,com.sun.jersey.core.header .FormDataContentDisposition), annotated with POST of resource, class com.lotame.ws.api.resources.FileResource, is not recognized as valid resource method.

或者

  HTTP -Unsupported Media Type Error

在网上查了好多,貌似都不能解决我遇到的问题,然后就不用他本身提供的例子,下面是我实现上传功能的例子:

1:创建一个JAVA Web工程:

2: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_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Restful Web Application</display-name> <servlet>
<servlet-name>jersey-helloworld-serlvet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>upload</param-value>
</init-param>
<load-on-startup></load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>jersey-helloworld-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>

3:ImageResource类中的内容

 package upload;

 import java.io.File;
import java.util.Iterator;
import java.util.List; import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType; import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.FileItemFactory;
import org.apache.tomcat.util.http.fileupload.FileUploadException;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload; @Path("/images")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public class ImageResource {
private static final String SERVER_UPLOAD_LOCATION_FOLDER = "C://"; @POST
@Produces(MediaType.APPLICATION_JSON)
public String uploadStatePolicy(@Context HttpServletRequest request) {
try {
String fileName = saveFile(request);
if (!fileName.equals("")) {
} else { }
} catch (Exception ex) {
}
return "";
} private String saveFile(HttpServletRequest request) {
String fileName = "";
try {
if (ServletFileUpload.isMultipartContent(request)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
if (items != null) {
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (!item.isFormField() && item.getSize() > ) {
fileName = processFileName(item.getName());
try {
item.write(new File(
SERVER_UPLOAD_LOCATION_FOLDER
+ fileName));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
} catch (Exception e) {
}
return fileName;
} private String processFileName(String fileNameInput) {
String fileNameOutput = null;
fileNameOutput = fileNameInput.substring(
fileNameInput.lastIndexOf("\\") + , fileNameInput.length());
return fileNameOutput;
}
}

4:form.html文件

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Form Page</title>
</head>
<body>
<h1>Upload a File</h1> <form action="http://localhost:8080/JerseyUpLoad/rest/images" method="post" enctype="multipart/form-data"> <p>
Select a file : <input type="file" name="file" size="" />
</p> <input type="submit" value="Upload It" />
</form> </body>
</html>

5运行即可。

最新文章

  1. 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本
  2. QT 网络编程二(UDP版本)
  3. Ninject简单的Demo
  4. poj 1986 Distance Queries LCA
  5. poj2828
  6. xcode5.1 armv7 armv7s arm64 类型, 区分, 概念等
  7. hdu 1175
  8. 二十七、Java图形化界面设计——容器(JFrame)
  9. C#实现在winfrom程序中下载文件
  10. appium 判断app是否安装
  11. 前端构建之gulp与常用插件(转载)
  12. mobile开发中常用的css
  13. css学习_css伪元素的本质
  14. mysql数据库指定ip远程访问 指定用户 指定数据库
  15. 困惑2----(已经OK)
  16. SharePoint2013 以其他用户登录和修改AD域用户密码 功能
  17. Use JAWS 14 in a VM
  18. leetcode814
  19. javascript初步了解
  20. in App Purchases一个注意事项

热门文章

  1. 我给女朋友讲编程CSS系列(3) CSS如何设置字体的类型、大小、颜色,如何使用火狐浏览器的Firebug插件查看网页的字体
  2. IOS开发---菜鸟学习之路--(六)-UITableView几个方法的使用说明
  3. ADO之密码验证--3次错误就锁定
  4. Monkey&#160;log异常分析说明
  5. Python+Selenium练习篇之16-自定义浏览器窗口大小
  6. Map的常用方法keySet()、entrySet()
  7. MFC录制音频和播放音频
  8. 软工实践第八次作业——UML设计
  9. RQNOJ 明明的随机数
  10. 使用xcache加速PHP运行