美文网首页
jersey 1.x 实现文件上传

jersey 1.x 实现文件上传

作者: 易望舒 | 来源:发表于2018-01-07 13:02 被阅读332次

文件下载上传功能很少会用到,但每次用的时候,都忘了之前是怎么实现和处理异常的,这次记下来,免得以后又得重新弄

1. 文件上传

    @POST
    @Path("/xxx")
    @Consumes(MediaType.MULTIPART_FORM_DATA) // 注解必须是这个类型
    public Object upload(FormDataMultiPart form) {
        /*
         * form 是请求的form静单全部数据,包含文件信息和其他字段,
         * 获取方式是form.getField("param name");  
         */
        FormDataBodyPart fuck= form.getField("fuck");  
        FormDataBodyPart file= form.getField("filename"); // 获取 BodyPart
        
        String filename = file.getContentDisposition().getFileName(); // 获取原始文件名
        InputStream in = file.getValueAs(InputStream.class); // 转为 InputStream
        try {
            //解决文件名称为中文时,文件名称乱码的问题
            filename = new String(filename.getBytes("ISO8859-1"), "UTF-8");
            /*
             * 这里是保存文件代码和业务逻辑
             */
            

        } catch (Exception e) {
            return xx;
        }
        return xx;
    }

2. 文件下载

    @POST   //post和get都可以
    @Path("/xx/{filecode}")
    @Produces(MediaType.APPLICATION_OCTET_STREAM)// 注解必须是这个类型
    public Response getAll(@PathParam(value = "filecode") String filecode) {
        File file = new File("xx/xx/" + filecode);
        // 如果文件不存在,提示404
        if (!file.exists()) {
            return Response.status(Response.Status.NOT_FOUND).build();
        }
        String fileName = null;
        try {
            fileName = URLEncoder.encode(filecode, "UTF-8");
        } catch (UnsupportedEncodingException e1) {
            return xx;
        }
        return  Response
                .ok(file)
                .header("Content-disposition", "attachment;filename=" + fileName)
                .header("Cache-Control", "no-cache").build();
    }

相关文章

网友评论

      本文标题:jersey 1.x 实现文件上传

      本文链接:https://www.haomeiwen.com/subject/ofmunxtx.html