基于restful服务端接口(二)

前段时间时间,我写了初步认识restful接口和基于restful服务端的一些接口,今天我将继续写服务端的几种接口

1)、restful接口返回文件流

    @GET
    @Path("/download/{type}/{massId}")
    @Produces(MediaType.APPLICATION_OCTET_STREAM)
    // 返回方式为流
    public byte[] downloadRestFile(@PathParam("type") String type,@PathParam("massId") String massId,
            @Context HttpServletRequest request,
            @Context HttpServletResponse response) throws Throwable {

        FileInputStream fis = null;
            fis = new FileInputStream(new File("D:\\test.csv"));
            response.setHeader("Content-Disposition", "attachment;filename=test.csv" );// 为文件命名

        try {
            byte[] b = new byte[fis.available()];
            fis.read(b);
            response.addHeader("content-type", "application/csv");
            return b;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

2)、通过Multipart接受文件和数据并且可以返回json数据

    @POST
    @Path("/createTest")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public String createTest(@Context HttpServletRequest request,
            @Context HttpServletResponse response) throws Exception {
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods","POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setContentType("text/html;charset=UTF-8");

        StringBuffer str = new StringBuffer();
        JSONObject json=new JSONObject(); 
        Map map = new HashMap();  
        try {
                FileItemFactory factory = new DiskFileItemFactory();  
                ServletFileUpload upload = new ServletFileUpload(factory);  
                File directory = null;    
                List<FileItem> items = new ArrayList();  
                try {  
                    items = upload.parseRequest(request);  
                    // 得到所有的文件  
                    Iterator<FileItem> it = items.iterator();  
                    while (it.hasNext()) {  
                        FileItem fItem = (FileItem) it.next();  
                        String fName = "";  
                        Object fValue = null;  
                        if (fItem.isFormField()) { // 普通文本框的值  
                            fName = fItem.getFieldName();   
                            fValue = fItem.getString("UTF-8");  
                            map.put(fName, fValue);  
                        } else { // 获取上传文件的值  
                            fName = fItem.getFieldName();  
                            fValue = fItem.getInputStream();   
                            String name = fItem.getName();  
                            if(name != null && !("".equals(name))) {  
                                name = name.substring(name.lastIndexOf(File.separator) + 1);  

                                directory = new File(("e://test//PDF//"));    
                                directory.mkdirs();

                                String filePath = ("e://testPDF//")+ File.separator + name;  

                                InputStream is = fItem.getInputStream();  
                                FileOutputStream fos = new FileOutputStream(filePath);  
                                byte[] buffer = new byte[1024];  
                                while (is.read(buffer) > 0) {  
                                    fos.write(buffer, 0, buffer.length);  
                                }  
                                fos.flush();  
                                fos.close();  
                            }  
                        }  
                    }  
                } catch (Exception e) {  
                    json.put("error", "3");
                    json.put("errmsg", "读取http请求属性值出错!");
                    e.printStackTrace();   
                }  

                // 数据处理  
                //这里可以获得传递过来的参数,或者进行签名验证
                //填写逻辑

                json.put("error", "0");
                json.put("errmsg", "");
        } catch (Exception ex) {
            json.clear();
            ex.printStackTrace();
            json.put("errno", "1");
            json.put("errmsg", ex.getMessage());
        }
        System.out.println("返回json:"+json.toString());
        return json.toString();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值