为了账号安全,请及时绑定邮箱和手机立即绑定

怎么使用httpclient发送大文件(1G以上)

怎么使用httpclient发送大文件(1G以上)

qq_遁去的一_1 2019-02-21 11:01:06
怎么使用httpclient中的put方法上传大文件? 如果是一次性读到内存中发送的话,内存很容易撑爆,所以肯定是用边读边发的方式,或者使用分片上传。现在想知道怎么使用httpclient实现边读边传,使用jdk自带的方法已经知道怎么实现了。 public static void putRequest(String uri, Map<String, String> headers, File file) { URLConnection urlconnection = null; BufferedOutputStream bos = null; BufferedInputStream bis = null; try { URL url = new URL(uri); urlconnection = url.openConnection(); urlconnection.setDoOutput(true); urlconnection.setDoInput(true); if (urlconnection instanceof HttpURLConnection) { try { ((HttpURLConnection) urlconnection).setRequestMethod("PUT"); for(Map.Entry<String, String> entry : headers.entrySet()) { ((HttpURLConnection) urlconnection).setRequestProperty(entry.getKey(), entry.getValue()); } ((HttpURLConnection) urlconnection).connect(); } catch (ProtocolException e) { e.printStackTrace(); } } bos = new BufferedOutputStream(urlconnection.getOutputStream()); bis = new BufferedInputStream(new FileInputStream(file)); byte[] buff = new byte[1024 * 8]; int i; while ((i = bis.read(buff)) != -1) { bos.write(buff, 0, i); } System.out.println(((HttpURLConnection) urlconnection).getResponseMessage()); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(bis); IOUtils.closeQuietly(bos); ((HttpURLConnection) urlconnection).disconnect(); } }
查看完整描述

4 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

可以用流的方式

查看完整回答
反对 回复 2019-03-01
?
隔江千里

TA贡献1906条经验 获得超10个赞

非要用http协议吗

查看完整回答
反对 回复 2019-03-01
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

1G的大小就已经不建议通过http的方式来处理了。
ftp吧。

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 2303 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信