下载url文件转inputStream工具


import okhttp3.*
import java.io.*
import java.util.concurrent.TimeUnit;

public class OKHttpUtils{


    /**
* http 链接超时时间
*/
private static final int minConnectTimeout = 3000;

/**
* http 写入超时时间
*/
private static final int minWriteTimeout = 3000;

/**
* http read 超时时间
*/
private static final int minReadTimeout = 3000;

/**
* http Async Call Timeout
*/
private static final int minCallTimeout = 3000;

/**
* http 链接池
*/
private static final int connectPoolSize = 1000;


private static ConnectionPool connectionPool = new ConnectionPool(connectionPoolSize,30,TimeUnit.MINUTES);

public static OKHttpClient getHttpClient(){
    OKHttpClient client= new OKHttpClient.Builder()
        .connectTimeout(minConnectTimeout ,TimeUnit.MILLISECONDS)
        .readTimeout(minReadTimeout ,TimeUnit.MILLISECONDS)
        .writeTimeout(minWriteTimeout ,TimeUnit.MILLISECONDS)
        .callTimeout(minCallTimeout ,TimeUnit.MILLISECONDS)
        .connectionPool(connectionPool)
        .build();
    return client;

}




public static InputStream downLoad2Stream(String url){
    try{
        OKHttpClient client = getHttpClient();
        Request request = new Request.Builder()
           .url(url).build();
        Response response = null;
        respone = client.newCall(request).execute();
        // 转换成byte数组
        return response.body.byteStream();
    }catch(Exception e){
    
    }
}

//上传流文件
    HttpHeaders httpHeaders = new  HttpHeaders();
    httpHeaders.setContentType(MediaType.MULTIPART_FROM_DATA);
    MutiValeMap<String ,Object>  requestBody = new  LinkedMutiValueMap<>();
requestBody.add("file",new UploadInputResource(inputStream,inputStream.available(),filenName));
requestBody.add("id",fileId);
requestBody.add("fileName",fileName);

HttpEntity<MultiValueMap> requestEntity = new HttpEntity<>(requestBody,httpHeaders);
String result = restTemplate.postForEntity(url,requestEntity,String.class).getBody();
//todo  

}

public calss UploadInputResource extends InputStreamResource{

private int length;
private Sting fileName;

public UploadInputResource(inputStream,inputStream.available(),filenName)){
    super(inputStream);
    this.length = length;
    this.fineName = fileName;
}

@Override  有异常就抛
public long contentLength(){
    return this.length;
}

@Override
public String getFileName(){
    return this.fileName();
}

}



//下载文件
HttpGet httpGetPack = new HttpGet(url);
HttpClient httpClient = HttpClientBuilder.create().build();
HttpResponse httpResponse = httpClient.execute(httpGetPack);
if(httpRespone != null){
    //保存文件
    try(InputStream downInputStream = httpResponse.getEntity().getContent()){
        FileUtils.save(downInputStream,file.getAbsolutePath());
    }
}

public static boolean save(InputStream inputStream ,String path){
    try(OutputStream outputStream = new FileOutputStream(path)){
        byte[] buffer = new byte[1024];
        int size = 0;
        while((size = inputStream.read(buffer))>0){
            outputStream.write(buffer,0,size);
        }
    }catch(Exception e){
        // todo
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值