zoukankan      html  css  js  c++  java
  • jersey上传文件解决办法

             这两天在使用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 0
    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 1
    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 415-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>1</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() > 0) {
    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("\") + 1, 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="50" />
    14        </p>
    15 
    16        <input type="submit" value="Upload It" />
    17     </form>
    18 
    19 </body>
    20 </html>

    5运行即可。

  • 相关阅读:
    云架构系统如何做性能分析?| 实战干货
    1024 程序员日,聊聊升职加薪与职业发展!
    测试面试题集锦(三)| 计算机网络和数据库篇(附答案)
    在线沙龙 | 前端测试技术创新与实践
    测试开发系列课程学员打卡听课细则
    这 5 款实用性能测试工具,你会如何选择?
    618 年中大促!Python 自动化测试训练营立减 1000 元!送接口测试实战课!
    美人
    栀子花开
    朋友别哭
  • 原文地址:https://www.cnblogs.com/fantiantian/p/3600925.html
Copyright © 2011-2022 走看看