android jersey 上传图片,jersey 1.x 实现文件上传

本文记录了使用Java实现文件上传和下载的功能,主要涉及jersey-multipart-1.19.1.jar和mimepull-1.9.1.jar这两个库。在文件上传中,通过`FormDataMultiPart`获取文件信息并保存,处理中文文件名乱码问题。文件下载部分,根据文件码获取文件并设置响应头以实现下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

额外需要jar包:jersey-multipart-1.19.1.jar和mimepull-1.9.1.jar ;版本必须和jersey保持一致,要不然会抛出异常,下载地址http://mvnrepository.com

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();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值