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

怎么使用httpclient中的put方法上传大文件?

如果是一次性读到内存中发送的话,内存很容易撑爆,所以肯定是用边读边发的方式,或者使用分片上传。现在想知道怎么使用httpclient实现边读边传,使用jdk自带的方法已经知道怎么实现了。

public static void putRequest(String uri, Map 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 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();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值