首页 > 其他分享 >根据上传的excel文件url,进行文件查询

根据上传的excel文件url,进行文件查询

时间:2023-06-25 17:14:18浏览次数:35  
标签:文件 return url excel fileName close inputStream os FileItem

HttpResponse response = HttpUtil.createGet(fileUrl)
.setConnectionTimeout(20000)
.setReadTimeout(120000)
.timeout(3600000)
.execute();
InputStream inputStream = response.bodyStream();
boolean xls = ExcelFileUtil.isXls(inputStream);
boolean xlsx = ExcelFileUtil.isXlsx(inputStream);
if(!xls&&!xlsx){
return R.failed("不是Excel文件!");
}

MultipartFile multipartFile = getMultipartFile(inputStream, "read.xlsx");
try {
InputStream inputStreamOther = multipartFile.getInputStream();
//使用hutool的类,内部其实还是调用WorkbookFactory.create方法,只不过多了个关闭流的操作
Workbook workbook = WorkbookUtil.createBook(inputStreamOther);
Sheet sheet = workbook.getSheetAt(0);
//获得当前sheet的开始行
int firstRowNum = sheet.getFirstRowNum();
Row row = sheet.getRow(firstRowNum);
String s;
for (int i = 0; i < ODPS_CZRKXXSJB_IMPORT.length; i++) {
s = row.getCell(i).getStringCellValue();
if (StrUtil.isBlank(s)) {
return R.failed("警告!模板为空或有误!");
}
if (!ODPS_CZRKXXSJB_IMPORT[i].equals(s)) {
return R.failed("警告!模板为空或有误!第 " + (i + 1) + " 列名错误");
}
}
} catch (IOException e) {
e.printStackTrace();
}




/**
* 获取封装得MultipartFile
*
* @param inputStream inputStream
* @param fileName fileName
* @return MultipartFile
*/
public MultipartFile getMultipartFile(InputStream inputStream, String fileName) {
FileItem fileItem = createFileItem(inputStream, fileName);
//CommonsMultipartFile是feign对multipartFile的封装,但是要FileItem类对象
return new CommonsMultipartFile(fileItem);
}


/**
* FileItem类对象创建
*
* @param inputStream inputStream
* @param fileName fileName
* @return FileItem
*/
public FileItem createFileItem(InputStream inputStream, String fileName) {
FileItemFactory factory = new DiskFileItemFactory(16, null);
String textFieldName = "file";
FileItem item = factory.createItem(textFieldName, MediaType.MULTIPART_FORM_DATA_VALUE, true, fileName);
int bytesRead = 0;
byte[] buffer = new byte[8192];
OutputStream os = null;
//使用输出流输出输入流的字节
try {
os = item.getOutputStream();
while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
inputStream.close();
} catch (IOException e) {
log.error("Stream copy exception", e);
throw new IllegalArgumentException("文件上传失败");
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
log.error("Stream close exception", e);

}
}
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
log.error("Stream close exception", e);
}
}
}

return item;
}

标签:文件,return,url,excel,fileName,close,inputStream,os,FileItem
From: https://www.cnblogs.com/wjsqqj/p/17503373.html

相关文章

  • linux文件系统和设备驱动+file结构体
    1,文件系统和设备驱动之间的关系 1)应用程序和VFS之间是系统调用;2)VFS与文件系统以及设备文件之间的接口是file_operations结构体成员函数,这个结构体可以对文件进行打开,读写,定位,控制等操作;如下图所示: 3)由于字符设备的上层没有类似磁盘的ext2等文件系统,所以字符设备的file_opte......
  • py程序:写一个保存文本到文件的函数
    py程序:写一个保存文本到文件的函数━━━━━━━━━━━━━━━━━━━━━━以下是一个Python函数,用来将给定的文本字符串保存到指定的文件中:defsave_text_to_file(text,filename):withopen(filename,'w')asf:f.write(text)该函数使用Python的内置o......
  • 前端封装excel下载方法&&解决前端下载请求设置responseType: 'blob'时后台报错无法处
    请求设置responseType:'blob'时接口报错了如果不做处理则获取不到接口错误信息,此时下载的文件是有问题的。/*@paramsoptions{}*data:Blob,*fileName:String,*successMsg:String,**/import{Message}from'element-ui'importdownloadExcelFilePublicHandler......
  • Linux从文件中逐行读取文件名并将匹配的文件复制到指定目录
    问题应该算挺常见的但是一句话还挺难说清楚,所以百度特别难搜。场景就是,有一堆以员工名称命名的文件(名称可能还有字母数字等前后缀),现在给定一个员工清单,需要从这些文件中筛选出员工清单上列出的员工的文件,并复制到另外一个目录中。输入:1.许多文件名包含员工名称的文件2.一个清......
  • 本科生导师制问题之文件存取累加
    在小学期的过程中,我选择了一个本科生导师制的问题,主要数据结构是广义表,在编写功能的时候有一个统计某导师所有的学生数量,其中包括研究生、本科生两种,为此我编写了一个函数,具体如下--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdownv......
  • 【python基础】文件-文件路径
    1.文件路径我们发现不管是写入还是写出操作,我们提供的都是文件名,其实这里准确说应该是文件路径。当我们简单把文件名传递给open函数时,Python将在当前执行程序的文件所在的目录中查找文件名所代表的文件。根据组织文件的方式,可能需要打开不在当前执行程序文件所属目录中的文件。......
  • 实用解析dmp文件内容
    配置实验环境:1.1生产三个文件expwoo/oracletable=dump_tablefile=1.dmp;expdpwoo/oracletables=dump_tabledirectory=dhomedumpfile=2.dmp;touch3.dmp2.创建随机数据SQL>createtabledump_tableas2selectrownumasid,3......
  • 通过句柄恢复Linux下误删除的数据库数据文件
    环境介绍:OS:RedhatEnterPrise5.4DB:OracleEnterPriseDatabase11gR2(11.2.3.0)   在数据库正常运行时,运维人员在无意中将部分数据文件删除了,此时数据库管理员并不知道,且数据库运行正常,并没有立即抛出错误和告警;但是开发人员在对某张表进行更新的时候,正好这张表在被删除的......
  • 04、文件属性详述
    一、概述文件属性信息组成#1、文件详细信息详解134319695-rw-------.1rootroot1.7KDec812:08anaconda-ks.cfg134319707-rw-r--r--1rootroot12Dec1311:48index#2、inode编号Linux系统中文件的唯一编号,就相当于身份证号。#3、硬链......
  • VMware虚拟机ubuntu备份文件到百度网盘+定时任务自动备份
    在虚拟机里弄东西,免不了有些文件需要保存,手动保存太麻烦,用工具设置成自动备份,还不怕遗忘。一、文件同步方式一:1.在你的物理机上找一个目录假设:D:\Win-share2.在VM虚拟机里/mnt/hgfs/路径下就可以看到分享的物理机目录了。3.设置百度网盘同步选择文件夹是选择物理机......