最近的一个需求需要根据一个mp3的链接获取文件流上传到内部的存储平台,
记录一下获取文件流的代码吧。
pom文件

        <dependency><groupId>org.apache.thrift</groupId><artifactId>libthrift</artifactId><version>0.8.0</version></dependency>

代码:

package com.example.demo.service;import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.ByteArrayBuffer;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;import javax.net.ssl.SSLContext;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;/*** @Author:luobinghan*/
@Service
@Slf4j
public class HttpService {private int maxConnections = 500;private int maxConnectionsPerRoute = 100;private static final int DEFAULT_BUFFER_SIZE = 4096;private CloseableHttpClient httpStreamClient;public HttpService() {try {this.httpStreamClient = HttpClients.custom().setConnectionManager(getManager(getSslSocketFactory())).disableAutomaticRetries().build();} catch (Exception e) {log.error("init httpStreamClient error");}}/*** 获取url链接内容* @param url* @return*/public ByteBuffer getUrl(String url) {HttpEntity entity = null;try {entity = httpGet(url);} catch (Exception e) {return null;}try {ByteBuffer bytes = getBytesFromHttpRsp(entity);return bytes;} catch (Exception e) {return null;}}private PoolingHttpClientConnectionManager getManager(LayeredConnectionSocketFactory sslSocketFactory) {ConnectionSocketFactory plainSocketFactory = PlainConnectionSocketFactory.getSocketFactory();Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create().register("http", plainSocketFactory).register("https", sslSocketFactory).build();PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager(registry);manager.setMaxTotal(this.maxConnections);manager.setDefaultMaxPerRoute(this.maxConnectionsPerRoute);return manager;}private LayeredConnectionSocketFactory getSslSocketFactory() throws Exception {SSLContext sslContext = SSLContexts.custom().loadTrustMaterial((chain, authType) -> true).build();return new SSLConnectionSocketFactory(sslContext, new String[]{"SSLv2Hello", "SSLv3", "TLSv1","TLSv1.1", "TLSv1.2" }, null,NoopHostnameVerifier.INSTANCE);}private HttpEntity httpGet(String url) throws Exception {return httpStreamClient.execute(new HttpGet(url)).getEntity();}private ByteBuffer getBytesFromHttpRsp(org.apache.http.HttpEntity entity) throws Exception {final InputStream inputStream = entity.getContent();try {int capacity = (int)entity.getContentLength();if (capacity <= 0) {capacity = DEFAULT_BUFFER_SIZE;}final ByteArrayBuffer buffer = new ByteArrayBuffer(capacity);final byte[] tmp = new byte[DEFAULT_BUFFER_SIZE];int bytesRead;while((bytesRead = inputStream.read(tmp)) != -1) {buffer.append(tmp, 0, bytesRead);}return ByteBuffer.wrap(buffer.toByteArray());} finally {inputStream.close();}}public static void main(String[] args) {String url = "xxx";HttpService httpService = new HttpService();byte[] bytes = httpService.getUrl(url).array();InputStream inputStream =  new ByteArrayInputStream(bytes);}
}

java根据url获取文件流相关推荐

  1. 任意java程序都可以是servlet吗_C#从Java servlet中获取文件流实现任意文件下载

    目的: 从C#创建的客户端中向Java创建的servlet提交请求(不知道这是否算作严格的CS架构),servet返回一个文件流( 任意格式的文件 ),然后通过C#获取该文件流并保存到本地,使得文件可 ...

  2. 根据url获取文件流MultipartFile

    常见的url包含网络上一些图片的链接,静态服务器上边的图片地址等等,有时候一些链接内嵌到自己项目中时,由于图片大小或者网站的一些防盗处理,往往无法正确加载图片,因此需要单独做处理: 1.pom文件添加 ...

  3. java根据url获取pdf流_从URL获取动态创建的PDF

    我需要获取从aspx站点生成的pdf文件 . Backstory : 我想从一个网站获得schedueles,我已成功获取包含参数的scheduele的url . 如果您关注该网址,您将看到一个PDF ...

  4. Java 获取url地址文件流

    /*** 根据url下载文件流* @param urlStr* @return*/ public static InputStream getInputStreamFromUrl(String url ...

  5. java获取url文件格式_本地文件/url获取文件类型

    package com.cjw.baidu.ocr; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringU ...

  6. java从url下载文件_从URL下载Java文件

    java从url下载文件 Today we will learn how to download a file from URL in java. We can use java.net.URL op ...

  7. JAVA 实现返回PDF文件流并进行下载

    JAVA 实现返回PDF文件流并进行下载 首先确保本地存放pdf 保证通过路径可以拿到文件 我这边把pdf放在e盘下的目录 1.前台方法 原生ajax 发送请求返回文件流进行下载 function d ...

  8. java工具类获取文件扩展名与content-type、http与content-type映射关系

    java工具类获取文件扩展名与content-type.http与content-type映射关系 大家好,我是酷酷的韩~ 一.对应关系参考地址: http://doc.chacuo.net/cont ...

  9. java 获取文件时间_在java中怎么获取文件的最后修改日期

    在java中怎么获取文件的最后修改日期 发布时间:2020-07-10 09:57:26 来源:亿速云 阅读:86 作者:Leah 在java中怎么获取文件的最后修改日期?相信很多没有经验的人对此束手 ...

最新文章

  1. 彻底搞懂机器学习中的正则化
  2. [Scoi2016]背单词[字典树+dfs重构树[类似虚树]]
  3. iOS核心动画高级技术(十四) 图像IO
  4. 使用jstack 发现死锁
  5. 2018python培训-2018python深度学习核心技术培训班
  6. 【机器学习基础】数学推导+纯Python实现机器学习算法25:CatBoost
  7. RabbitMQ消息confirm确认机制
  8. 牛客假日团队赛8:F.Telephone Lines(二分+spfa)
  9. 【Linux】一步一步学Linux——exit命令(207)
  10. 在Windows上忽略Git存储库中的目录
  11. Vue.js如何在一个页面调用另一个同级页面的方法
  12. 三星s6 html5测试分数,魅蓝s6安兔兔跑分有多少
  13. 使用MarkDown来写一份漂亮简约的简历
  14. linux下打字软件,桌面应用|与 Linux 一起学习:学习打字
  15. 阿里云服务器学生免费领取指南
  16. 奇迹mu在服务器运行,奇迹mu 服务端的常用端口及功能
  17. STM32 USB HID IAP升级
  18. [POJ1637]SightseeingTour
  19. GPS北斗校时服务器(时间服务器)在港口自动化系统应用
  20. win7 报错 failed to install servicefailed installing

热门文章

  1. Fiber resonator gyroscope: sensitivity and thermal nonreciprocity论文笔记
  2. 部标主动安全云平台后台正式免费开放
  3. 画涂的软件 android,涂鸦画画精灵APP
  4. 大学生php开发培训,PHP开发 开发培训学费
  5. 华为swot分析2020_2020年全球与中国人工智能与分析系统行业现状及未来5年市场预测分析报告...
  6. 编写自动化软件+python
  7. java扑克牌类游戏下载_【参考源码】Java入门第三季 7-1 简易扑克牌游戏
  8. 计算机网络编程知识总结
  9. Cat ,Grep命令
  10. Edge浏览器可以使用苹果电脑壁纸了,网友:惊艳啊