jersey框架實現文件上傳


    jersey框架是一個開源的RESTful的框架,實現了實現了JAX-RS規范,進一步地簡化 RESTful service 和 client 開發。當然而且是必須的,jersey對文件的上傳和下載也是支持的。下面我們就講解怎么基於jersey框架實現文件上傳。

首先我們來看看在jersey框架中常見的用來表示接受數據類型和返回數據類型的注解:

 

@GET
查詢請求 相當於數據庫的查詢數據操作
@POST 插入請求 相當於數據庫的插入數據操作
@PUT 更新請求 相當於數據庫的更新數據操作
@DELETE 刪除請求 相當於數據的刪除數據操作
@Path uri路徑 定義資源的訪問路徑,client通過這個路徑訪問資源。比如:@Path("user")
@Produces 指定返回MIME格式 資源按照那種數據格式返回,可取的值有:MediaType.APPLICATION_XXX。比如:@Produces(MediaType.APPLICATION_XML)
@Consumes 接受指定的MIME格式 只有符合這個參數設置的請求再能訪問到這個資源。比如@Consumes("application/x-www-form-urlencoded")
@PathParam uri路徑參數 寫在方法的參數中,獲得請求路徑參數。比如:@PathParam("username")  String userName
@QueryParam uri路徑請求參數 寫在方法的參數中,獲得請求路徑附帶的參數。比如:@QueryParam("desc")  String desc
@HeaderParam 請求頭中的參數 寫在方法的請求頭中,比如:@HeaderParam("userId") String userid
@DefaultValue 設置@QueryParam參數的默認值 如果@QueryParam沒有接收到值,就使用默認值。比如:@DefaultValue("description") @QueryParam("desc") String desc
@FormParam form傳遞的參數 接受form傳遞過來的參數。比如:@FormParam("name")  String userName
@FormDataParam 通常用在上傳文件的時候 客戶端提交form(MIME為multipart/form-data)的方式提交表單,服務端使用@FormDataParam來解析form表單中的參數
@BeanParam 通過Bean的形式傳遞參數 接受client傳遞的bean類型的參數,同時這個bean可以在屬性上配置@FormParam用以解決client的屬性名稱和bean的屬性名稱不一致的問題。比如:@BeanParam  User user
@Context 獲得一些系統環境信息 通過@Context可以獲得以下信息:UriInfo、ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse和HttpHeaders等
@XmlRootElement 將bean轉換為xml 如果要將bean以xml或json的格式返回,必須要這個注解。比如:

@XmlRootElement                                                                         

public class User{...}                                                                 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如上面的表中所示,通常在文件上傳時,我們在服務端將使用@FormDataParam注解來解析上傳的文件,而在客戶端請求時,需要注意請求頭這時不能有Content-Type, 請求體的類型為form-data。

在服務端的一般格式如下:

 1     @POST
 2     @Path("/uploadEventCsv")
 3     @Consumes({MediaType.MULTIPART_FORM_DATA})  //指定接受類型
 4     @Produces(MediaType.APPLICATION_JSON)。  //返回類型
 5    
 6     public WrapResponseModel uploadFile(
 7                     @HeaderParam("userId") int userId,
 8                     @FormDataParam("file") InputStream fileInputStream,
 9                     @FormDataParam("file") FormDataContentDisposition fileMetaData) throws Exception {
10         //調用相應的service處理
11     }

 注意,在導入FormDataContentDisposition時,應該導入的jar包是:

第一個,切忌不要導錯了。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM