java 远程文件url如何转为输入流

网友投稿 691 2022-09-21


java 远程文件url如何转为输入流

目录java 远程文件url 转为输入流根据BdBurKdURL网址获取输入流方法一方法二

java 远程文件url 转为输入流

URL url = new URL(fileUrl);

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

//设置超时间为3秒

conn.setConnectTimeout(3*1000);

//防止屏蔽程序抓取而返回403错误

conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

//得到输入流

InputStream inputStream = conn.getInputStream();

public static AjaxModel parseExcelForInfo(InputStream inputStream, String fileName, int taskId) {

try {

//创建workbook对象

Workbook workbook = null;

if (fileName.contains(".xlsx")) {

workbook = new XSSFWorkbook(inputStream);

} else if (fileName.contains(".xls")) {

workbook = new HSSFWorkbook(inputStream);

} else {

return AjaxModel.failed(-1, "文件类型不正确");

}

//获取第一个sheet表

Sheet sheetAt = workbook.getSheetAt(0);

if (sheetAt != null) {

// TODO 校验excel头

Row headRow = sheetAt.getRow(0);

for (int i = 0; i < BusinessSettlementConstants.TEMPLATE_COULMN.length; i++) {

if (!FileUtil.getCellFormatValue(headRow.getCell(i)).trim().equals(BusinessSettlementConstants.TEMPLATE_COULMN[i])) {

LOGGER.info("parseExcelForInfo excel头部信息顺序不正确,getCellFormatValue(headRow.getCell(i)):{}," +

"BusinessSettlementConstants.TEMPLATE_COULMN[i]:{},taskId:{}", FileUtil.getCellFormatValue(hhttp://eadRow.getCell(i)),

BusinessSettlementConstants.TEMPLATE_COULMN[i], taskId);

return AjaxModel.failed("excel标题头顺序不正确:" + FileUtil.getCellFormatValue(headRow.getCell(i)));

}

}

int startRowNum = sheetAt.getFirstRowNum() + 1;

int lastRowhttp://Num = sheetAt.getLastRowNum();

LOGGER.info("解析excel开始taskId:{},从【{}】行开始,到第【{}】行结束", taskId, startRowNum, lastRowNum);

List> dataList = new ArrayList>();

for (int rowNum = startRowNum; rowNum <= lastRowNum; rowNum++) {

// 每一行数据

Row row = sheetAt.getRow(rowNum);

Map map = new HashMap<>();

LOGGER.info("parseExcelForInfo row:{}", row);

if (row != null && row.getCell(0) != null && StringUtils.isNotEmpty(row.getCell(0).getStringCellValue()) && row.getCell(2) != null && row.getCell(4) != null) {

LOGGER.info("parseExcelForInfo row:{},cell:{}", row, row.getCell(0));

// 姓名

map.put("userName", FileUtil.getCellFormatValue(row.getCell(0)));

dataList.add(map);

}

}

LOGGER.info("--------------解析完成 dataList:{}", dataList);

if (dataList.size() <= 0) {

return AjaxModel.failed(-1, "解析表格数据为空");

}

AjaxModel success = AjaxModel.success();

success.getData().put("dataList", dataList);

return success;

} else {

LOGGER.info("sheet内容为空");

return AjaxModel.failed(-1, "表格内容为空");

}

} catch (Exception e) {

LOGGER.error("parseExcelForInfo 解析异常", e);

}

return AjaxModel.failed(-1, "解析表格异常");

}

public static String getCellFormatValue(Cell cell) {

cell.setCellType(CellType.STRING);

return cell.getStringCellValue();

}

根据URL网址获取输入流

方法一

//文件访问路径

String url = "";

InputStream intstream = new URL(url).openStream();

方法二

public InputStream getInputStreamByUrl(String strUrl) {

HttpURLConnection conn = null;

try {

URL url = new URL(strUrl);

conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("GET");

conn.setConnectTimeout(20 * 1000);

final ByteArrayOutputStream output = new ByteArrayOutputStBdBurKdream();

IOUtils.copy(conn.getInputStream(), output);

return new ByteArrayInputStream(output.toByteArray());

} catch (Exception e) {

logger.error("getInputStreamByUrl 异常,exception is {}", e);

} finally {

try {

if (conn != null) {

conn.disconnect();

}

} catch (Exception e) {

}

}

return null;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口文档管理系统对企业有什么作用?推荐几款常见的线上接口文档管理系统
下一篇:华为Optical module power is abnormal告警处理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~