使用httpclient上传文件

由于客户端有上传文件的需求,服务器接收到客户端上传的文件后,需要将文件透传给后台业务系统.

以前给后台业务系统交互时,组装多段请求时使用的是org.apache.http.entity.mime.content.FileBody对象保存文件对象透传,但是这样的话,服务器需要在本地生成临时文件,比较麻烦.
ContentBody body = new FileBody((File) value);
entity.addPart("pic", body);
这样的话需要先生成本地文件,上传成功后再删除临时文件,相当繁琐.

今天偶然发现,可以使用org.apache.http.entity.mime.content.InputStreamBody.InputStreamBody(InputStream, String)类,直接将客户端的文件输入流拷贝一下就可以了.这样就省去了在本地生成临时文件的麻烦.
ByteArrayInputStream bis = new ByteArrayInputStream(data);
InputStreamBody isb = new InputStreamBody(bis, fileName);
entity.addPart("pic", isb);


通过以上改造,省去了在本地生成临时文件的烦恼,并且使代码看起来更加直观.
这种方式适用于需要透传文件的地方.比如 "客户端"--"服务器"--"业务系统", "客户端"最终要将文件上传到 "业务系统",这时 "服务器"就可以使用这种方法,直接透传,省时省力.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值