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

  1. 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
  2. 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
  3. 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.

或者

  1. HTTP -Unsupported Media Type Error

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

1:创建一个JAVA Web工程:

2:XML文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <display-name>Restful Web Application</display-name>
  4.  
  5. <servlet>
  6. <servlet-name>jersey-helloworld-serlvet</servlet-name>
  7. <servlet-class>
  8. com.sun.jersey.spi.container.servlet.ServletContainer
  9. </servlet-class>
  10. <init-param>
  11. <param-name>com.sun.jersey.config.property.packages</param-name>
  12. <param-value>upload</param-value>
  13. </init-param>
  14. <load-on-startup></load-on-startup>
  15. </servlet>
  16.  
  17. <servlet-mapping>
  18. <servlet-name>jersey-helloworld-serlvet</servlet-name>
  19. <url-pattern>/rest/*</url-pattern>
  20. </servlet-mapping>
  21. </web-app>

3:ImageResource类中的内容

  1. package upload;
  2.  
  3. import java.io.File;
  4. import java.util.Iterator;
  5. import java.util.List;
  6.  
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.ws.rs.Consumes;
  9. import javax.ws.rs.POST;
  10. import javax.ws.rs.Path;
  11. import javax.ws.rs.Produces;
  12. import javax.ws.rs.core.Context;
  13. import javax.ws.rs.core.MediaType;
  14.  
  15. import org.apache.tomcat.util.http.fileupload.FileItem;
  16. import org.apache.tomcat.util.http.fileupload.FileItemFactory;
  17. import org.apache.tomcat.util.http.fileupload.FileUploadException;
  18. import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
  19. import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
  20.  
  21. @Path("/images")
  22. @Consumes(MediaType.MULTIPART_FORM_DATA)
  23. public class ImageResource {
  24. private static final String SERVER_UPLOAD_LOCATION_FOLDER = "C://";
  25.  
  26. @POST
  27. @Produces(MediaType.APPLICATION_JSON)
  28. public String uploadStatePolicy(@Context HttpServletRequest request) {
  29. try {
  30. String fileName = saveFile(request);
  31. if (!fileName.equals("")) {
  32. } else {
  33.  
  34. }
  35. } catch (Exception ex) {
  36. }
  37. return "";
  38. }
  39.  
  40. private String saveFile(HttpServletRequest request) {
  41. String fileName = "";
  42. try {
  43. if (ServletFileUpload.isMultipartContent(request)) {
  44. FileItemFactory factory = new DiskFileItemFactory();
  45. ServletFileUpload upload = new ServletFileUpload(factory);
  46. List<FileItem> items = null;
  47. try {
  48. items = upload.parseRequest(request);
  49. } catch (FileUploadException e) {
  50. e.printStackTrace();
  51. }
  52. if (items != null) {
  53. Iterator<FileItem> iter = items.iterator();
  54. while (iter.hasNext()) {
  55. FileItem item = iter.next();
  56. if (!item.isFormField() && item.getSize() > ) {
  57. fileName = processFileName(item.getName());
  58. try {
  59. item.write(new File(
  60. SERVER_UPLOAD_LOCATION_FOLDER
  61. + fileName));
  62. } catch (Exception e) {
  63. e.printStackTrace();
  64. }
  65. }
  66. }
  67. }
  68. }
  69. } catch (Exception e) {
  70. }
  71. return fileName;
  72. }
  73.  
  74. private String processFileName(String fileNameInput) {
  75. String fileNameOutput = null;
  76. fileNameOutput = fileNameInput.substring(
  77. fileNameInput.lastIndexOf("\\") + , fileNameInput.length());
  78. return fileNameOutput;
  79. }
  80. }

4:form.html文件

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  5. <title>Form Page</title>
  6. </head>
  7. <body>
  8. <h1>Upload a File</h1>
  9.  
  10. <form action="http://localhost:8080/JerseyUpLoad/rest/images" method="post" enctype="multipart/form-data">
  11.  
  12. <p>
  13. Select a file : <input type="file" name="file" size="" />
  14. </p>
  15.  
  16. <input type="submit" value="Upload It" />
  17. </form>
  18.  
  19. </body>
  20. </html>

5运行即可。

jersey上传文件解决办法的更多相关文章

  1. Linux无权限上传文件解决办法

    无权限上传文件解决办法 1.当前登录的普通用户:user1/password1 2.切换到管理员(user2)用户: sudo su - user2 输入user2用户的密码:password2 或者 ...

  2. Loadrunner上传文件解决办法(大文件)

    Loadrunner上传文件解决办法(大文件) 最近再做一个跟海量存储相关的项目测试,需要通过LR模拟用户大量上传和下载文件,请求是Rest或Soap,同时还要模拟多种大小尺寸不一的文件 通常情况下, ...

  3. 转:Loadrunner上传文件解决办法(大文件)

    最近再做一个跟海量存储相关的项目测试,需要通过LR模拟用户大量上传和下载文件,请求是Rest或Soap,同时还要模拟多种大小尺寸不一的文件 通常情况下,都是使用简单的post协议即可: 方法一: we ...

  4. IE input file隐藏不能上传文件解决方法

    当大神们都在探讨更深层次的问题时,我还在这里转载发些肤浅的问题解决方案.罢了,为了和我一样笨的后来人. 问题: 上传文件时,用<input type="file" /> ...

  5. 织梦dedecms后台文件media_add.php任意上传漏洞解决办法

    织梦在安装到阿里云服务器后阿里云后台会提示media_add.php后台文件任意上传漏洞,引起的文件是后台管理目录下的media_add.php文件,下面跟大家分享一下这个漏洞的修复方法: 首先找到并 ...

  6. angularJS+Ionic移动端图片上传的解决办法

    前端开发中经常会碰到图片上传的问题,网上的解决办法很多,可是有些图片上传的插件会有一些附属的插件,因此因为一个图片上传的问题可能额需要引入其他插件到项目中,久而久之项目会不伦不类,有时候插件之间也会有 ...

  7. 使用Jersey上传文件

    采用jquery.form.js异步上传图片,并结合<form>表单 <script type="text/javascript"> //采用jquery. ...

  8. php网站环境无法上传的解决办法?

    一. 检查网站目录的权限.二. php.ini配置文件php.ini中影响上传的有以下几处:file_uploads 是否开启 on 必须开启是否允许HTTP文件上传post_max_size = 8 ...

  9. 百度云管家使用socks代理无法上传下载解决办法

    像前几篇随笔描述的那样,笔者在学校里通过shadowsocks使用ipv6访问双栈vps来免费使用外网,但是在设置百度云管家的代理时发现:使用socks代理客户端可以访问文件列表,但是无法上传下载. ...

随机推荐

  1. Eclipse主题更换方法

    1.打开Eclipse的Help->Eclipse Marketplace 2.在Find里搜索Eclipse Color Theme,点击Install按钮 3.打开Window->Pr ...

  2. IDEA配置好maven后新建maven项目一直build失败的解决方法

    maven配置了aliyun中央仓库后,IDEA新建maven项目一直出现以下问题: 相信有遇到这个问题的小伙伴很蛋疼,明明maven配置没错,新建项目却一直build失败,为了这个问题我重装过几次I ...

  3. 洛谷P1079 Vigenère 密码

    题目链接:https://www.luogu.org/problemnew/show/P1079

  4. Python对文本文件的简单操作(一)

    工作背景 性能测试工程师,主要测试工具--loadrunner,主要是接口测试. 实现功能 loadrunner对报文格式的转换存在问题,部分报文无法转换,故使用Python编写脚本自动将soap协议 ...

  5. Spring七大模块

    七大模块,如下: 1. Spring Core: Core封装包是框架的最基础部分,提供IOC和依赖注入特性.这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性 ...

  6. RESTful-rest_framework版本控制、分页器-第六篇

     版本控制: 源码位置分析第一步: 源码位置分析第二步:在APIView-despath方法-initial-determine_version #执行determine_version,返回两个值, ...

  7. [oldboy-django][5python基础][内置函数]zip

    python3中,把两个或两个以上的迭代器封装成生成器,在循环遍历生成器中,不断产生元组. 如果提供的迭代器长度不对等,生成器的长度为最短迭代器的长度. # coding= utf-8 # zip 多 ...

  8. C#HTTP POST文件数据

    /// <summary> /// 上传文件 /// </summary> /// <param name="uriStr">服务器网址< ...

  9. .NET泛型编程 性能提升工具 List<T>

    原文发布时间为:2009-10-27 -- 来源于本人的百度文章 [由搬家工具导入] 结论  .NET 2.0中的泛型是强有力的,你写的代码不必限定于一特定类型,然而你的代码却能具有类型安全性。泛型的 ...

  10. 前端知识点总结——CSS

    1.CSS的概述 1.什么是CSS? CSS:Cascading Style Sheets层叠样式表,级联样式表(简称:样式表) 2.作用 设置HTML网页元素的样式 3.HTML与CSS的关系 HT ...