java根据url获取文件流
最近的一个需求需要根据一个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获取文件流相关推荐
- 任意java程序都可以是servlet吗_C#从Java servlet中获取文件流实现任意文件下载
目的: 从C#创建的客户端中向Java创建的servlet提交请求(不知道这是否算作严格的CS架构),servet返回一个文件流( 任意格式的文件 ),然后通过C#获取该文件流并保存到本地,使得文件可 ...
- 根据url获取文件流MultipartFile
常见的url包含网络上一些图片的链接,静态服务器上边的图片地址等等,有时候一些链接内嵌到自己项目中时,由于图片大小或者网站的一些防盗处理,往往无法正确加载图片,因此需要单独做处理: 1.pom文件添加 ...
- java根据url获取pdf流_从URL获取动态创建的PDF
我需要获取从aspx站点生成的pdf文件 . Backstory : 我想从一个网站获得schedueles,我已成功获取包含参数的scheduele的url . 如果您关注该网址,您将看到一个PDF ...
- Java 获取url地址文件流
/*** 根据url下载文件流* @param urlStr* @return*/ public static InputStream getInputStreamFromUrl(String url ...
- java获取url文件格式_本地文件/url获取文件类型
package com.cjw.baidu.ocr; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringU ...
- 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 ...
- JAVA 实现返回PDF文件流并进行下载
JAVA 实现返回PDF文件流并进行下载 首先确保本地存放pdf 保证通过路径可以拿到文件 我这边把pdf放在e盘下的目录 1.前台方法 原生ajax 发送请求返回文件流进行下载 function d ...
- java工具类获取文件扩展名与content-type、http与content-type映射关系
java工具类获取文件扩展名与content-type.http与content-type映射关系 大家好,我是酷酷的韩~ 一.对应关系参考地址: http://doc.chacuo.net/cont ...
- java 获取文件时间_在java中怎么获取文件的最后修改日期
在java中怎么获取文件的最后修改日期 发布时间:2020-07-10 09:57:26 来源:亿速云 阅读:86 作者:Leah 在java中怎么获取文件的最后修改日期?相信很多没有经验的人对此束手 ...
最新文章
- 彻底搞懂机器学习中的正则化
- [Scoi2016]背单词[字典树+dfs重构树[类似虚树]]
- iOS核心动画高级技术(十四) 图像IO
- 使用jstack 发现死锁
- 2018python培训-2018python深度学习核心技术培训班
- 【机器学习基础】数学推导+纯Python实现机器学习算法25:CatBoost
- RabbitMQ消息confirm确认机制
- 牛客假日团队赛8:F.Telephone Lines(二分+spfa)
- 【Linux】一步一步学Linux——exit命令(207)
- 在Windows上忽略Git存储库中的目录
- Vue.js如何在一个页面调用另一个同级页面的方法
- 三星s6 html5测试分数,魅蓝s6安兔兔跑分有多少
- 使用MarkDown来写一份漂亮简约的简历
- linux下打字软件,桌面应用|与 Linux 一起学习:学习打字
- 阿里云服务器学生免费领取指南
- 奇迹mu在服务器运行,奇迹mu 服务端的常用端口及功能
- STM32 USB HID IAP升级
- [POJ1637]SightseeingTour
- GPS北斗校时服务器(时间服务器)在港口自动化系统应用
- win7 报错 failed to install servicefailed installing
热门文章
- Fiber resonator gyroscope: sensitivity and thermal nonreciprocity论文笔记
- 部标主动安全云平台后台正式免费开放
- 画涂的软件 android,涂鸦画画精灵APP
- 大学生php开发培训,PHP开发 开发培训学费
- 华为swot分析2020_2020年全球与中国人工智能与分析系统行业现状及未来5年市场预测分析报告...
- 编写自动化软件+python
- java扑克牌类游戏下载_【参考源码】Java入门第三季 7-1 简易扑克牌游戏
- 计算机网络编程知识总结
- Cat ,Grep命令
- Edge浏览器可以使用苹果电脑壁纸了,网友:惊艳啊