jersey 1.x 实现文件上传

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

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();
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。